<!DOCTYPE html PUBLIC "-//W3C//XHTML 1.0 Transitional" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html>
	<head>
		<title>Config File Reference</title>
		<meta name="keyword" content="POL, EScript, documentation, Ultima Online, UO, packets, client, ultima online client, emulator" />
		<meta name="description" content="Penultima Online Documentation website." />
		<meta name="Author" content="Racalac, Rykard" />
		<meta name="Generator" content="POL Doc-o-matic" />
		<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
		<meta http-equiv="Content-Style-Type" content="text/css" />
		<link href="style.css" rel="stylesheet" type="text/css"  media="all"  />
	</head>
	<script language="JavaScript1.2" type="text/javascript">
function ExpandContract(s) {
  var bulletE = document.getElementById("bullet_"+s);
  var spanE = document.getElementById("span_"+s);
  var Expanded = bulletE.innerHTML;

  if(Expanded == '[+]') {
    spanE.style.display = 'block';
    bulletE.innerHTML = '[-]';
  }
  else { 
    spanE.style.display = 'none'; 
    bulletE.innerHTML = '[+]';
  }
}
</script>

<body>
<div class="container"><div id="doc-mini-header">
<div class="doc-home"><a href="index.html">
            Home
				  </a></div>
<h1>
<a name="TOP"></a>POL Configuration Files</h1>
<p style="font-size: 10pt; font-weight: bold; text-align: left;">This is a list of all the files that are read by or used by the Core. Any other files are used by user scripts and are not listed here.</p>In the following config file explanations, some punctuation is used to show repetition, arbitrary values, and optional entries:<ul>
<li>No punctuation: text must be the same verbatim.</li>
<li>enclosed in brackets [ ]: text is an optional entry.</li>
<li>enclosed in parenthesis ( ): text is an arbitrary value.</li>
<li>enclosed in curly braces { }: text is the default value.</li>
<li>elipsis ... : repeat entries are allowed.</li>
</ul>This means the punctuation in these cases should NOT be in the actual config files used by POL, they only appear here for information purposes. Exception: curly braces { } are used to define an element in a config file. These must be present in the actual file.<b><br>
            Last Modified:
            03/24/2009</b>
</div></div><div id="main"><div class="container">
<div class="doc-col_2"><div class="doc-smallbox"><ul>
<li><a href="#animxlate.cfg">animxlate.cfg</a></li>
<li><a href="#armrzone.cfg">armrzone.cfg</a></li>
<li><a href="#attributes.cfg">attributes.cfg</a></li>
<li><a href="#auxsvc.cfg">auxsvc.cfg</a></li>
<li><a href="#bannedips.cfg">bannedips.cfg</a></li>
<li><a href="#boats.cfg">boats.cfg</a></li>
<li><a href="#circles.cfg">circles.cfg</a></li>
<li><a href="#cmds.cfg">cmds.cfg</a></li>
<li><a href="#combat.cfg">combat.cfg</a></li>
<li><a href="#console.cfg">console.cfg</a></li>
<li><a href="#ecompile.cfg">ecompile.cfg</a></li>
<li><a href="#equip.cfg">equip.cfg</a></li>
<li><a href="#fileaccess.cfg">fileaccess.cfg</a></li>
<li><a href="#itemdesc.cfg">itemdesc.cfg</a></li>
<li><a href="#justice.cfg">justice.cfg</a></li>
<li><a href="#light.cfg">light.cfg</a></li>
<li><a href="#menus.cfg">menus.cfg</a></li>
<li><a href="#movecost.cfg">movecost.cfg</a></li>
<li><a href="#multis.cfg">multis.cfg</a></li>
<li><a href="#music.cfg">music.cfg</a></li>
<li><a href="#nocast.cfg">nocast.cfg</a></li>
<li><a href="#npcdesc.cfg">npcdesc.cfg</a></li>
<li><a href="#party.cfg">party.cfg</a></li>
<li><a href="#pkg.cfg">pkg.cfg</a></li>
<li><a href="#pkgroots.cfg">pkgroots.cfg</a></li>
<li><a href="#pol.cfg">pol.cfg</a></li>
<li><a href="#regions.cfg">regions.cfg</a></li>
<li><a href="#repsys.cfg">repsys.cfg</a></li>
<li><a href="#resource.cfg">resource.cfg</a></li>
<li><a href="#resourcetype.cfg">resourcetype.cfg</a></li>
<li><a href="#servers.cfg">servers.cfg</a></li>
<li><a href="#servspecopt.cfg">servspecopt.cfg</a></li>
<li><a href="#spells.cfg">spells.cfg</a></li>
<li><a href="#stacking.cfg">stacking.cfg</a></li>
<li><a href="#startloc.cfg">startloc.cfg</a></li>
<li><a href="#syshook.cfg">syshook.cfg</a></li>
<li><a href="#uoclient.cfg">uoclient.cfg</a></li>
<li><a href="#uoconvert.cfg">uoconvert.cfg</a></li>
<li><a href="#uopacket.cfg">uopacket.cfg</a></li>
<li><a href="#uoskills.cfg">uoskills.cfg</a></li>
<li><a href="#vitals.cfg">vitals.cfg</a></li>
<li><a href="#watch.cfg">watch.cfg</a></li>
<li><a href="#weather.cfg">weather.cfg</a></li>
<li><a href="#www.cfg">www.cfg</a></li>
</ul></div></div>
<div class="doc-col_23">
<div class="doc-mainbox-gold">
<div class="doc-anchor"><a href="#TOP">[^]</a></div>
<table class="doc-table" frame="void" rules="groups" width="100%" border="1" CELLPADDING="1" CELLSPACING="0">
<tbody><tr><th align="center" colspan="2"><a name="animxlate.cfg">animxlate.cfg</a></th></tr></tbody>
<tbody><tr id="doc-table-dark">
<th align="left">Location:</th>
<td align="left">/config only</td>
</tr></tbody>
<tbody><tr id="doc-table-med">
<th align="left">Number Allowed</th>
<td align="left">1</td>
</tr></tbody>
<tbody><tr id="doc-table-dark">
<th align="left">Required to Start?</th>
<td align="left">No</td>
</tr></tbody>
<tbody><tr id="doc-table-med"><th align="left" colspan="2">Required/Used by</th></tr></tbody>
<tbody><tr><td colspan="2">Core</td></tr></tbody>
<tbody><tr id="doc-table-dark"><th align="left" colspan="2">Purpose</th></tr></tbody>
<tbody><tr><td colspan="2">Defines the mappings for animation codes for standing and while on horseback.</td></tr></tbody>
<tbody><tr id="doc-table-dark"><th align="left" colspan="2">Structure</th></tr></tbody>
<tbody><tr><td colspan="2"><pre>
OnMount
{
    [(int normal animation) (int mounted animation)]...
}
</pre></td></tr></tbody>
</table>
</div>
<div class="doc-mainbox-gold">
<div class="doc-anchor"><a href="#TOP">[^]</a></div>
<table class="doc-table" frame="void" rules="groups" width="100%" border="1" CELLPADDING="1" CELLSPACING="0">
<tbody><tr><th align="center" colspan="2"><a name="armrzone.cfg">armrzone.cfg</a></th></tr></tbody>
<tbody><tr id="doc-table-dark">
<th align="left">Location:</th>
<td align="left">/config only</td>
</tr></tbody>
<tbody><tr id="doc-table-med">
<th align="left">Number Allowed</th>
<td align="left">1</td>
</tr></tbody>
<tbody><tr id="doc-table-dark">
<th align="left">Required to Start?</th>
<td align="left">No</td>
</tr></tbody>
<tbody><tr id="doc-table-med"><th align="left" colspan="2">Required/Used by</th></tr></tbody>
<tbody><tr><td colspan="2">Core</td></tr></tbody>
<tbody><tr id="doc-table-dark"><th align="left" colspan="2">Purpose</th></tr></tbody>
<tbody><tr><td colspan="2">Defines armor zones for character layers, and chance to hit each zone.</td></tr></tbody>
<tbody><tr id="doc-table-dark"><th align="left" colspan="2">Structure</th></tr></tbody>
<tbody><tr><td colspan="2"><pre>
ArmorZone
{
    Name    (string zone name)
    Chance  (int chance to hit)
    [Layer  (int UO client layer)]...
}
[ArmorZone...]
</pre></td></tr></tbody>
<tbody><tr id="doc-table-dark"><th align="left" colspan="2">Explanation</th></tr></tbody>
<tbody>
<tr><td colspan="2">Chance is a percent chance to hit this zone. I.e. 'Body' might be a 44 percent chance to hit, and 'Head' a 14 percent chance.</td></tr>
<tr><td colspan="2">Layer is for the different equipped item layers the UO client uses. For example, items that are only equipped on the arms (like platemail arms) are layer 19. You may define multiple layers per zone.</td></tr>
</tbody>
</table>
</div>
<div class="doc-mainbox-gold">
<div class="doc-anchor"><a href="#TOP">[^]</a></div>
<table class="doc-table" frame="void" rules="groups" width="100%" border="1" CELLPADDING="1" CELLSPACING="0">
<tbody><tr><th align="center" colspan="2"><a name="attributes.cfg">attributes.cfg</a></th></tr></tbody>
<tbody><tr id="doc-table-dark">
<th align="left">Location:</th>
<td align="left">Any Package</td>
</tr></tbody>
<tbody><tr id="doc-table-med">
<th align="left">Number Allowed</th>
<td align="left">any</td>
</tr></tbody>
<tbody><tr id="doc-table-dark">
<th align="left">Required to Start?</th>
<td align="left">Yes</td>
</tr></tbody>
<tbody><tr id="doc-table-med"><th align="left" colspan="2">Required/Used by</th></tr></tbody>
<tbody><tr><td colspan="2">Core</td></tr></tbody>
<tbody><tr id="doc-table-dark"><th align="left" colspan="2">Purpose</th></tr></tbody>
<tbody><tr><td colspan="2">Defines Attribute names and aliases</td></tr></tbody>
<tbody><tr id="doc-table-dark"><th align="left" colspan="2">Structure</th></tr></tbody>
<tbody><tr><td colspan="2"><pre>
Attribute (Attribute_Name)
{
    [Alias                      (Alias_Name)]...
    [GetIntrinsicModFunction    (script_name:exported_func_name)]
    [Delay                      (Skill Delay for skills with buttons on Skill Window)]
    [Unhides                    (Unhides on skill use (0/1)]
    [Script                     (Location of script for skills with buttons on Skill Window)]
    [DefaultCap                 (cap in tenth of attribute {default ssopt:DefaultAttributeCap}]
}
[Attribute...]
</pre></td></tr></tbody>
<tbody><tr id="doc-table-dark"><th align="left" colspan="2">Explanation</th></tr></tbody>
<tbody>
<tr><td colspan="2">Attribute_Name defines the UNIQUE name for this attribute, like 'Cooking', 'Tactics', 'Strength', etc.</td></tr>
<tr><td colspan="2">Aliases are optional and any number maybe be assigned for each attribute. This way 'STR' may be used in place of 'Strength'</td></tr>
<tr><td colspan="2">At the LEAST, these attributes must be defined: 'Strength', 'Intelligence', 'Dexterity', 'Parry', and 'Tactics' for use in internal calculations.</td></tr>
<tr><td colspan="2">GetIntrinsicModFunction returns a value between -30000 and +30000 that is added to the Attribute "base" value to obtain the "effective" value for the attribute. The function is called when UO.EM RecalVitals is called.</td></tr>
</tbody>
<tbody><tr id="doc-table-dark"><th align="left" colspan="2">Related Files</th></tr></tbody>
<tbody>
<tr><td colspan="2"><a href="#uoclient.cfg">uoclient.cfg</a></td></tr>
<tr id="doc-table-light"><td colspan="2"><a href="#vitals.cfg">vitals.cfg</a></td></tr>
<tr><td colspan="2"><a href="#servspecopt.cfg">servspecopt.cfg</a></td></tr>
</tbody>
</table>
</div>
<div class="doc-mainbox-gold">
<div class="doc-anchor"><a href="#TOP">[^]</a></div>
<table class="doc-table" frame="void" rules="groups" width="100%" border="1" CELLPADDING="1" CELLSPACING="0">
<tbody><tr><th align="center" colspan="2"><a name="auxsvc.cfg">auxsvc.cfg</a></th></tr></tbody>
<tbody><tr id="doc-table-dark">
<th align="left">Location:</th>
<td align="left">Any Package</td>
</tr></tbody>
<tbody><tr id="doc-table-med">
<th align="left">Number Allowed</th>
<td align="left">1</td>
</tr></tbody>
<tbody><tr id="doc-table-dark">
<th align="left">Required to Start?</th>
<td align="left">No</td>
</tr></tbody>
<tbody><tr id="doc-table-med"><th align="left" colspan="2">Required/Used by</th></tr></tbody>
<tbody><tr><td colspan="2">Core</td></tr></tbody>
<tbody><tr id="doc-table-dark"><th align="left" colspan="2">Purpose</th></tr></tbody>
<tbody><tr><td colspan="2">Defines an Auxilliary Interface Service script in the current package.</td></tr></tbody>
<tbody><tr id="doc-table-dark"><th align="left" colspan="2">Structure</th></tr></tbody>
<tbody><tr><td colspan="2"><pre>
AuxService
{
    Port     (intger port)
    Script   (string script filename)
    [IPMatch (IPaddress)[/(netmask)]]
}
</pre></td></tr></tbody>
<tbody><tr id="doc-table-dark"><th align="left" colspan="2">Explanation</th></tr></tbody>
<tbody>
<tr><td colspan="2">Port is a different port than the gameserver uses. This will be the port your AUX interface external program uses to connect to the server.</td></tr>
<tr><td colspan="2">Script is the script filename the core will call when it receives an AUX connection (the 'program' in the file will be called)</td></tr>
<tr><td colspan="2">Example IPMatch value: 192.168.0.0/255.255.255.0 would prevent anyone with an IP address other than 192.168.0.* from connecting. The illegal ip will be treated by immediately closing the connection.</td></tr>
</tbody>
</table>
</div>
<div class="doc-mainbox-gold">
<div class="doc-anchor"><a href="#TOP">[^]</a></div>
<table class="doc-table" frame="void" rules="groups" width="100%" border="1" CELLPADDING="1" CELLSPACING="0">
<tbody><tr><th align="center" colspan="2"><a name="bannedips.cfg">bannedips.cfg</a></th></tr></tbody>
<tbody><tr id="doc-table-dark">
<th align="left">Location:</th>
<td align="left">/config only</td>
</tr></tbody>
<tbody><tr id="doc-table-med">
<th align="left">Number Allowed</th>
<td align="left">1</td>
</tr></tbody>
<tbody><tr id="doc-table-dark">
<th align="left">Required to Start?</th>
<td align="left">No</td>
</tr></tbody>
<tbody><tr id="doc-table-med"><th align="left" colspan="2">Required/Used by</th></tr></tbody>
<tbody><tr><td colspan="2">Core</td></tr></tbody>
<tbody><tr id="doc-table-dark"><th align="left" colspan="2">Purpose</th></tr></tbody>
<tbody><tr><td colspan="2">Defines IP address ranges that are not allowed to connect to the game server.</td></tr></tbody>
<tbody><tr id="doc-table-dark"><th align="left" colspan="2">Structure</th></tr></tbody>
<tbody><tr><td colspan="2"><pre>
BannedIP
{
    IPMatch (IPaddress)[/(netmask)]
}
[BannedIP...]
</pre></td></tr></tbody>
<tbody><tr id="doc-table-dark"><th align="left" colspan="2">Explanation</th></tr></tbody>
<tbody><tr><td colspan="2">If netmask is not defined, the default is 255.255.255.255 (exact IP match).</td></tr></tbody>
</table>
</div>
<div class="doc-mainbox-gold">
<div class="doc-anchor"><a href="#TOP">[^]</a></div>
<table class="doc-table" frame="void" rules="groups" width="100%" border="1" CELLPADDING="1" CELLSPACING="0">
<tbody><tr><th align="center" colspan="2"><a name="boats.cfg">boats.cfg</a></th></tr></tbody>
<tbody><tr id="doc-table-dark">
<th align="left">Location:</th>
<td align="left">/config only</td>
</tr></tbody>
<tbody><tr id="doc-table-med">
<th align="left">Number Allowed</th>
<td align="left">1</td>
</tr></tbody>
<tbody><tr id="doc-table-dark">
<th align="left">Required to Start?</th>
<td align="left">Yes</td>
</tr></tbody>
<tbody><tr id="doc-table-med"><th align="left" colspan="2">Required/Used by</th></tr></tbody>
<tbody><tr><td colspan="2">Core</td></tr></tbody>
<tbody><tr id="doc-table-dark"><th align="left" colspan="2">Purpose</th></tr></tbody>
<tbody><tr><td colspan="2">Defines the locations of all item components for each boat 'facing' graphic.</td></tr></tbody>
<tbody><tr id="doc-table-dark"><th align="left" colspan="2">Structure</th></tr></tbody>
<tbody><tr><td colspan="2"><pre>
Boat
{
    ObjType                     (int boat multi graphic)
    TillerMan                   (int item graphic) (x offset) (y offset)
    PortGangplankExtended       (int item graphic) (x offset) (y offset)
    PortGangplankRetracted      (int item graphic) (x offset) (y offset)
    StarboardGangplankExtended  (int item graphic) (x offset) (y offset)
    StarboardGangplankRetracted (int item graphic) (x offset) (y offset)
    Hold                        (int item graphic) (x offset) (y offset)
}
[Boat...]
</pre></td></tr></tbody>
<tbody><tr id="doc-table-dark"><th align="left" colspan="2">Explanation</th></tr></tbody>
<tbody>
<tr><td colspan="2">ObjType should be &gt;= 0x4000.</td></tr>
<tr><td colspan="2">All the x,y tile distance offsets are from the ship's mast. As normal on the map, positive X is east, positive Y is south. It doesn't matter what 'facing' of the boat this is for, parts of the boat that are east of the mast are defined with positive X values, parts south of the mast are defined with positive Y values, and vice versa.</td></tr>
</tbody>
</table>
</div>
<div class="doc-mainbox-gold">
<div class="doc-anchor"><a href="#TOP">[^]</a></div>
<table class="doc-table" frame="void" rules="groups" width="100%" border="1" CELLPADDING="1" CELLSPACING="0">
<tbody><tr><th align="center" colspan="2"><a name="circles.cfg">circles.cfg</a></th></tr></tbody>
<tbody><tr id="doc-table-dark">
<th align="left">Location:</th>
<td align="left">/config only</td>
</tr></tbody>
<tbody><tr id="doc-table-med">
<th align="left">Number Allowed</th>
<td align="left">1</td>
</tr></tbody>
<tbody><tr id="doc-table-dark">
<th align="left">Required to Start?</th>
<td align="left">No</td>
</tr></tbody>
<tbody><tr id="doc-table-med"><th align="left" colspan="2">Required/Used by</th></tr></tbody>
<tbody><tr><td colspan="2">Core</td></tr></tbody>
<tbody><tr id="doc-table-dark"><th align="left" colspan="2">Purpose</th></tr></tbody>
<tbody><tr><td colspan="2">Configures the 'spell circles', groups of increasing power spells.</td></tr></tbody>
<tbody><tr id="doc-table-dark"><th align="left" colspan="2">Structure</th></tr></tbody>
<tbody><tr><td colspan="2"><pre>
Circle (int number)
{
    Mana        (int manacost)
    Difficulty  (int spell difficulty)
    PointValue  (int skill gain value)
    Delay       (int second casting delay)
}
[Circle...]
</pre></td></tr></tbody>
<tbody><tr id="doc-table-dark"><th align="left" colspan="2">Explanation</th></tr></tbody>
<tbody><tr><td colspan="2">This file used to determine mana, skill gain, etc. for each group of spells, but it's probably obselete now.</td></tr></tbody>
</table>
</div>
<div class="doc-mainbox-gold">
<div class="doc-anchor"><a href="#TOP">[^]</a></div>
<table class="doc-table" frame="void" rules="groups" width="100%" border="1" CELLPADDING="1" CELLSPACING="0">
<tbody><tr><th align="center" colspan="2"><a name="cmds.cfg">cmds.cfg</a></th></tr></tbody>
<tbody><tr id="doc-table-dark">
<th align="left">Location:</th>
<td align="left">/config only</td>
</tr></tbody>
<tbody><tr id="doc-table-med">
<th align="left">Number Allowed</th>
<td align="left">1</td>
</tr></tbody>
<tbody><tr id="doc-table-dark">
<th align="left">Required to Start?</th>
<td align="left">Yes</td>
</tr></tbody>
<tbody><tr id="doc-table-med"><th align="left" colspan="2">Required/Used by</th></tr></tbody>
<tbody><tr><td colspan="2">Core</td></tr></tbody>
<tbody><tr id="doc-table-dark"><th align="left" colspan="2">Purpose</th></tr></tbody>
<tbody><tr><td colspan="2">Configures the command level heirarchy for the server.</td></tr></tbody>
<tbody><tr id="doc-table-dark"><th align="left" colspan="2">Structure</th></tr></tbody>
<tbody><tr><td colspan="2"><pre>
CmdLevel (cmdlevel name)
{
    DIR   (string path to this cmdlevel's textcmd directory)
    [DIR...]
    Alias (string alias name for this cmdlevel)
    [Alias...]
}
[CmdLevel...] {each successive element is one level higher than the last}
</pre></td></tr></tbody>
<tbody><tr id="doc-table-dark"><th align="left" colspan="2">Explanation</th></tr></tbody>
<tbody>
<tr><td colspan="2">Command levels are defined in increasing order of power. Command level 'numbers' will be assigned automatically from this file.</td></tr>
<tr><td colspan="2">If you change the cmdlevel names from player/coun/seer/gm/admin/test, it is recommended you define 'Alias' lines to associate these basic cmdlevels with your custom cmdlevels. This way, package cmds.cfg files will place their commands into your command structure.</td></tr>
<tr><td colspan="2">Additional DIR properties allow you to specify additional commands in packages, just set your path to i.e. /pkg/mypkg/textcmd/admin .</td></tr>
</tbody>
</table>
</div>
<div class="doc-mainbox-gold">
<div class="doc-anchor"><a href="#TOP">[^]</a></div>
<table class="doc-table" frame="void" rules="groups" width="100%" border="1" CELLPADDING="1" CELLSPACING="0">
<tbody><tr><th align="center" colspan="2"><a name="combat.cfg">combat.cfg</a></th></tr></tbody>
<tbody><tr id="doc-table-dark">
<th align="left">Location:</th>
<td align="left">/config only</td>
</tr></tbody>
<tbody><tr id="doc-table-med">
<th align="left">Number Allowed</th>
<td align="left">1</td>
</tr></tbody>
<tbody><tr id="doc-table-dark">
<th align="left">Required to Start?</th>
<td align="left">No</td>
</tr></tbody>
<tbody><tr id="doc-table-med"><th align="left" colspan="2">Required/Used by</th></tr></tbody>
<tbody><tr><td colspan="2">Core</td></tr></tbody>
<tbody><tr id="doc-table-dark"><th align="left" colspan="2">Purpose</th></tr></tbody>
<tbody><tr><td colspan="2">Defines some combat-specific options.</td></tr></tbody>
<tbody><tr id="doc-table-dark"><th align="left" colspan="2">Structure</th></tr></tbody>
<tbody><tr><td colspan="2"><pre>
[DisplayParrySuccessMessages (0/1) {default 0})]
[WarmodeInhibitsRegen        (0/1) {default 0})]
[WarModeDelay                (int Seconds) {default 1})]
[SingleCombat                (0/1 {default 0})]
</pre></td></tr></tbody>
<tbody><tr id="doc-table-dark"><th align="left" colspan="2">Explanation</th></tr></tbody>
<tbody>
<tr><td colspan="2">WarModeDelay is a delay between ability to toggle war mode status via client. Does not affect using SetWarMode method.</td></tr>
<tr><td colspan="2">SingleCombat allows players to attack themselves.</td></tr>
</tbody>
</table>
</div>
<div class="doc-mainbox-gold">
<div class="doc-anchor"><a href="#TOP">[^]</a></div>
<table class="doc-table" frame="void" rules="groups" width="100%" border="1" CELLPADDING="1" CELLSPACING="0">
<tbody><tr><th align="center" colspan="2"><a name="console.cfg">console.cfg</a></th></tr></tbody>
<tbody><tr id="doc-table-dark">
<th align="left">Location:</th>
<td align="left">/config only</td>
</tr></tbody>
<tbody><tr id="doc-table-med">
<th align="left">Number Allowed</th>
<td align="left">1</td>
</tr></tbody>
<tbody><tr id="doc-table-dark">
<th align="left">Required to Start?</th>
<td align="left">No</td>
</tr></tbody>
<tbody><tr id="doc-table-med"><th align="left" colspan="2">Required/Used by</th></tr></tbody>
<tbody><tr><td colspan="2">Core</td></tr></tbody>
<tbody><tr id="doc-table-dark"><th align="left" colspan="2">Purpose</th></tr></tbody>
<tbody><tr><td colspan="2">Configures command characters that activate scripts when typed on the POL console.</td></tr></tbody>
<tbody><tr id="doc-table-dark"><th align="left" colspan="2">Structure</th></tr></tbody>
<tbody><tr><td colspan="2"><pre>
Commands
{
    [CMD  (letter)  (script) [(description}]]
    [CMD...]
}
</pre></td></tr></tbody>
<tbody><tr id="doc-table-dark"><th align="left" colspan="2">Explanation</th></tr></tbody>
<tbody>
<tr><td colspan="2">'letter' is case sensative, so 'a' can run a different script than 'A'. And '^A' is activated with CTRL-A</td></tr>
<tr><td colspan="2">'script' must be placed in /scripts/console.</td></tr>
<tr><td colspan="2">'?' is the help command - it prints the descriptions of all the other console commands.</td></tr>
<tr><td colspan="2">The number keys (0-9) are reserved for the shutdown scripts (after a certain delay)</td></tr>
<tr><td colspan="2">'^C' (CTRL-C) is reserved for immediate core shutdown.</td></tr>
<tr><td colspan="2">There are three special command script names: [lock] locks the console, no further console commands may be entered. [unlock] unlocks the console from the locked state, and [lock/unlock] toggles the lock status of the console.</td></tr>
<tr><td colspan="2">Reloadable with ReloadConfiguration() (polsys.em) or SIGHUP under linux</td></tr>
</tbody>
</table>
</div>
<div class="doc-mainbox-gold">
<div class="doc-anchor"><a href="#TOP">[^]</a></div>
<table class="doc-table" frame="void" rules="groups" width="100%" border="1" CELLPADDING="1" CELLSPACING="0">
<tbody><tr><th align="center" colspan="2"><a name="ecompile.cfg">ecompile.cfg</a></th></tr></tbody>
<tbody><tr id="doc-table-dark">
<th align="left">Location:</th>
<td align="left">same directory as ecompile.exe only</td>
</tr></tbody>
<tbody><tr id="doc-table-med">
<th align="left">Number Allowed</th>
<td align="left">1</td>
</tr></tbody>
<tbody><tr id="doc-table-dark">
<th align="left">Required to Start?</th>
<td align="left">No</td>
</tr></tbody>
<tbody><tr id="doc-table-med"><th align="left" colspan="2">Required/Used by</th></tr></tbody>
<tbody><tr><td colspan="2">ecompile</td></tr></tbody>
<tbody><tr id="doc-table-dark"><th align="left" colspan="2">Purpose</th></tr></tbody>
<tbody><tr><td colspan="2">Configures module, include, and package paths for compiling.</td></tr></tbody>
<tbody><tr id="doc-table-dark"><th align="left" colspan="2">Structure</th></tr></tbody>
<tbody><tr><td colspan="2"><pre>
ModuleDirectory (path to .em files)
IncludeDirectory (path to parent dir of non-packaged includes)
PolScriptRoot (path to non-packaged scripts)
PackageRoot (path to package root)
[PackageRoot...]
[GenerateListing (0/1 {default 0})]
[GenerateDebugInfo  (0/1 {default 0})]
[GenerateDebugTextInfo (0/1 {default 0})]
[DisplayWarnings (0/1 {default 0})]           //same as -w flag
[CompileAspPages (0/1 {default 0})]           //same as -a flag
[OnlyCompileUpdatedScripts (0/1 {default 0})] //same as -u flag
[GenerateDependencyInfo (0/1 {default 0})]    //Generate .dep files whether or not updating
[DisplayUpToDateScripts (0/1 {default 0})]    //Display the "xxx/script.ecl is up-to-date" message, or not.
[AutoCompileByDefault (0/1 {default 0})]      //If set, and you don't pass any script names or -r or -A, 
                                              //will perform an auto compile.
[UpdateOnlyOnAutoCompile (0/1 {default 0})]   //If set, autocompile will only update modified scripts.
[DisplaySummary (0/1 {default 0})]            //Displays overall totals after compilation, unless compilation 
                                              //aborted due to a compile error.
[OptimizeObjectMembers (0/1 {default 1})]     //-m flag will set it to 0

</pre></td></tr></tbody>
<tbody><tr id="doc-table-dark"><th align="left" colspan="2">Explanation</th></tr></tbody>
<tbody>
<tr><td colspan="2">The 'generate' properties allow default behavior for generating listing or debug files.</td></tr>
<tr><td colspan="2">If not found, ecompile will try to locate module and include directories from the system environment variables ECOMPILE_PATH_EM and ECOMPILE_PATH_INC.</td></tr>
<tr><td colspan="2">use ECOMPILE_CFG_PATH environment variable to find ecompile.cfg. (note that normally it tries to look where the executable is.  Some shells don't always pass this, particularly if you're using batch files or shell scripts - try putting the full path to ecompile in your batch file)</td></tr>
<tr><td colspan="2">Using this file allows 'packaged includes' because now ecompile knows about the path to packages, allowing it to find include files using the normal package descriptor format ':pkgname:includename:'</td></tr>
</tbody>
</table>
</div>
<div class="doc-mainbox-gold">
<div class="doc-anchor"><a href="#TOP">[^]</a></div>
<table class="doc-table" frame="void" rules="groups" width="100%" border="1" CELLPADDING="1" CELLSPACING="0">
<tbody><tr><th align="center" colspan="2"><a name="equip.cfg">equip.cfg</a></th></tr></tbody>
<tbody><tr id="doc-table-dark">
<th align="left">Location:</th>
<td align="left">/config only</td>
</tr></tbody>
<tbody><tr id="doc-table-med">
<th align="left">Number Allowed</th>
<td align="left">1</td>
</tr></tbody>
<tbody><tr id="doc-table-dark">
<th align="left">Required to Start?</th>
<td align="left">No</td>
</tr></tbody>
<tbody><tr id="doc-table-med"><th align="left" colspan="2">Required/Used by</th></tr></tbody>
<tbody><tr><td colspan="2">Core, on behalf of UO::EquipFromTemplate</td></tr></tbody>
<tbody><tr id="doc-table-dark"><th align="left" colspan="2">Purpose</th></tr></tbody>
<tbody><tr><td colspan="2">Defines default outfit templates, usually for NPCs, using EquipFromTemplate(character,templatename).</td></tr></tbody>
<tbody><tr id="doc-table-dark"><th align="left" colspan="2">Structure</th></tr></tbody>
<tbody><tr><td colspan="2"><pre>
Equipment (templatename)
{
    [Armor  (item name or objtype) [(color)]]
    [Weapon (item name or objtype) [(color)]]
    [Equip  (item name or objtype) [(color)]]
}
[Equipment...]
</pre></td></tr></tbody>
<tbody><tr id="doc-table-dark"><th align="left" colspan="2">Explanation</th></tr></tbody>
<tbody>
<tr><td colspan="2">Note 'Armor', 'Weapon', and 'Equip' are all equvilent, they no longer hold any seperate meaning.</td></tr>
<tr><td colspan="2">Careful with comment lines in this file, they might cause problems.</td></tr>
</tbody>
</table>
</div>
<div class="doc-mainbox-gold">
<div class="doc-anchor"><a href="#TOP">[^]</a></div>
<table class="doc-table" frame="void" rules="groups" width="100%" border="1" CELLPADDING="1" CELLSPACING="0">
<tbody><tr><th align="center" colspan="2"><a name="fileaccess.cfg">fileaccess.cfg</a></th></tr></tbody>
<tbody><tr id="doc-table-dark">
<th align="left">Location:</th>
<td align="left">/config only</td>
</tr></tbody>
<tbody><tr id="doc-table-med">
<th align="left">Number Allowed</th>
<td align="left">1</td>
</tr></tbody>
<tbody><tr id="doc-table-dark">
<th align="left">Required to Start?</th>
<td align="left">No</td>
</tr></tbody>
<tbody><tr id="doc-table-med"><th align="left" colspan="2">Required/Used by</th></tr></tbody>
<tbody><tr><td colspan="2">per-package file.em access</td></tr></tbody>
<tbody><tr id="doc-table-dark"><th align="left" colspan="2">Purpose</th></tr></tbody>
<tbody><tr><td colspan="2">Specifies what packages have file read/write/append access.</td></tr></tbody>
<tbody><tr id="doc-table-dark"><th align="left" colspan="2">Structure</th></tr></tbody>
<tbody><tr><td colspan="2"><pre>
FileAccess
{
  [Package (string package name, or *)]...
  [Directory (string directory name, or *)]...
  [Extension (string file extension name, or *)]...
  [AllowRead (0/1 {default 0})]
  [AllowWrite (0/1 {default 0})]
  [AllowAppend (0/1 {default 0})]
  [AllowRemote (0/1 {default 0})] 
}
</pre></td></tr></tbody>
<tbody><tr id="doc-table-dark"><th align="left" colspan="2">Explanation</th></tr></tbody>
<tbody>
<tr><td colspan="2">'*' above means it applies to all packages.</td></tr>
<tr><td colspan="2">AllowRemote means the package has access to other files, not just files in its package directory.</td></tr>
<tr><td colspan="2">Package matches the string name in a pkg.cfg. You can define multiple Package properties.</td></tr>
<tr><td colspan="2">Directory not implimented yet</td></tr>
<tr><td colspan="2">Extension examples are '.cfg', '.htm', etc. You can define multiple Extension properties.</td></tr>
<tr><td colspan="2">This config is reloadable on-demand. Use ReloadConfiguration() (polsys.em) or SIGHUP under linux.</td></tr>
</tbody>
</table>
</div>
<div class="doc-mainbox-gold">
<div class="doc-anchor"><a href="#TOP">[^]</a></div>
<table class="doc-table" frame="void" rules="groups" width="100%" border="1" CELLPADDING="1" CELLSPACING="0">
<tbody><tr><th align="center" colspan="2"><a name="itemdesc.cfg">itemdesc.cfg</a></th></tr></tbody>
<tbody><tr id="doc-table-dark">
<th align="left">Location:</th>
<td align="left">/config and/or any package</td>
</tr></tbody>
<tbody><tr id="doc-table-med">
<th align="left">Number Allowed</th>
<td align="left">any</td>
</tr></tbody>
<tbody><tr id="doc-table-dark">
<th align="left">Required to Start?</th>
<td align="left">Yes</td>
</tr></tbody>
<tbody><tr id="doc-table-med"><th align="left" colspan="2">Required/Used by</th></tr></tbody>
<tbody>
<tr><td colspan="2">Core</td></tr>
<tr id="doc-table-light"><td colspan="2">CreateItem functions</td></tr>
</tbody>
<tbody><tr id="doc-table-dark"><th align="left" colspan="2">Purpose</th></tr></tbody>
<tbody><tr><td colspan="2">Defines Item descriptions, to be assigned to individual items on creation. Note each UObject class expects different properties to be present, so each will be listed below. An actual itemdesc.cfg file would not look exactly like this. Class Name must be one of: ITEM CONTAINER SPELLBOOK DOOR HOUSE BOAT MAP WEAPON ARMOR.</td></tr></tbody>
<tbody><tr id="doc-table-dark"><th align="left" colspan="2">Structure</th></tr></tbody>
<tbody><tr><td colspan="2"><pre>
(Class Name)  (integer unique 'objtype')
{
    (PropertyName)      (value)
    [PropertyName...]
}

Item (objtype)
{
    Name                    (string unique object name)
    Graphic                 (int tile number)
    [Color                  (int color {default 0})]
    [Facing                 (int facing {default 0})]
    [Desc                   (string description {default empty})]
    [Tooltip                (string tooltip {default empty})]
    [WalkOnScript           (string scriptname)]
    [Script                 (string scriptname)]
    [EquipScript            (string scriptname)]
    [UnequipScript          (string scriptname)]
    [ControlScript          (string scriptname)]
    [CreateScript           (string scriptname)]
    [DestroyScript          (string scriptname)]
    [MethodScript           (string scriptname)]
    [RequiresAttention      (0/1 {default 1})]
    [Lockable               (0/1 {default 0})]
    [VendorSellsFor         (int gold {default 0})]
    [VendorBuysFor          (int gold {default 0})]
    [DecayTime              (int minutes {default servspecopt.cfg option})]
    [SaveOnExit             (0/1 {default 1})]
    [Movable                (0/1)]
    [DoubleClickRange       (int range {default servspecopt.cfg option})]
    [UseRequiresLOS         (0/1 {default 1})]
    [GhostsCanUse           (0/1 {default 0})]
    [CanUseWhileFrozen      (0/1 {default 0})]
    [CanUseWhileParalyzed   (0/1 {default 0})]
    [Newbie                 (0/1 {default 0})]
    [Invisible              (0/1 {default 0})]
    [DecaysOnMultis         (0/1 {default 0})]
    [BlocksCastingIfInHand  (0/1 {default 0})]
    [StrRequired            (int strength {default 0})]
    [Weight                 (int weight {default tiledata value})]
    [OldObjtype             (int old objtype)]...
    [StackingIgnoresCProps  (propname1) [(propname2)]... ]
    [Resource               (string resource name) (int amount)]
    [Resource...]
    [FireResist]            (int/(die-string value))]
    [ColdResist]            (int/(die-string value))]
    [EnergyResist]          (int/(die-string value))]
    [PoisonResist]          (int/(die-string value))]
    [PhysicalResist]        (int/(die-string value))]
    [FireDamage]            (int/(die-string value))]
    [ColdDamage]            (int/(die-string value))]
    [EnergyDamage]          (int/(die-string value))]
    [PoisonDamage]          (int/(die-string value))]
    [PhysicalDamage]        (int/(die-string value))]
}

Container (objtype)
{
    {everything Item can have, plus: }
    Gump            (int gump graphic)
    MinX            (int gump pixel coordinate)
    MaxX            (int gump pixel coordinate)
    MinY            (int gump pixel coordinate)
    MaxY            (int gump pixel coordinate)
    [MaxWeight      (int weight {default to servspecopt.cfg})]
    [MaxItems       (int number {default to servspecopt.cfg})]
    [CanInsertScript    (string scriptname)]
    [OnInsertScript     (string scriptname)]
    [CanRemoveScript    (string scriptname)]
    [OnRemoveScript     (string scriptname)]
}

Spellbook (objtype)
{
    {everything Container can have, plus: }
    SpellType  (string {"Magic", "Paladin", "Necro", "Bushido", "Ninjitsu" or "SpellWeaving"})
}

Door (objtype)
{    
    {everything Item can have, plus: }
    XMod            (int x modification when door toggled)
    YMod            (int y modification when door toggled)
}

House (objtype)
{
    {everything Item can have, plus: }
    MultiID         (int multiID number for this house)
}

Boat (objtype)
{
    {everything Item can have, plus: }
    MultiID         (int multiID number for this house)
}

Map (objtype)
{
    {everything Item can have, plus: }
    Editable        (0/1 {default 1})]
}

Weapon (objtype)
{
    {everything Item can have, plus: }
    Speed            (int weapon attack speed)
    [Delay           (int weapon delay in ms {default 0})]
    Damage           (die-string value)
    Attribute        (string attribute name for skill this weapon requires)
    [Anim            (int animation ID number for attack {default 0x9})]
    [MountedAnim     (int animationID on mount {defaults to value in animxlate.cfg})]
    [HitSound        (int soundID)]
    [MissSound       (int soundID)]
    [HitScript       (string script name)]
    
    [Projectile      (0/1 {default 0})]
    [ProjectileType  (int objtype of projectile)]
    [ProjectileAnim  (int tile number of animation)]
    [ProjectileSound (int soundID for projectile shoot)]
    
    [TwoHanded       (0/1 {default 0})]
    [MinRange        (int minimum range to attack {default 2 if projectile weapon, 0 else})]
    [MaxRange        (int maximum range to attack {default 20 if projectile weapon, 1 else})]
    [Intrinsic       (0/1 {default 0})]
}

Armor (objtype)
{
    {everything Item can have, plus: }
    AR               (int armor rating)
    [OnHitScript     (string script name)]   
    [Coverage        (string armor zone name {defaults to layer number zone})]
    [Coverage...]
}

...and lots of any of these in the file...
</pre></td></tr></tbody>
<tbody><tr id="doc-table-dark"><th align="left" colspan="2">Explanation</th></tr></tbody>
<tbody>
<tr><td colspan="2">Note: if objtype &lt; 0x4000, the 'graphic' property is not required, it is assumed objtype=graphic in this case.</td></tr>
<tr><td colspan="2">Valid ranges for custom items are 0x5000-0xEFFF (0xF000-0xFFFF reserved by core)</td></tr>
<tr><td colspan="2">Properties having to do with equipping an item is only meaningful if the item is actualy equippable (determined by the graphic number's tiledata flags).</td></tr>
<tr><td colspan="2">Item Create, Destroy, and Control scripts are in pkg format or in scripts/control. Method scripts must be packaged.</td></tr>
<tr><td colspan="2">Container scripts are in pkg format, or in scripts/control</td></tr>
<tr><td colspan="2">RequiresAttention 1 causes container gumps to close when you move, or to unhide you if the item is used.</td></tr>
<tr><td colspan="2">StackingIgnoresCProps is a space-delimited list of case-sensative CProp names that are ignored when stacking 2 of this item objtype. See also stacking.cfg for a global list.</td></tr>
<tr><td colspan="2">Spellbook: Recognized scroll objects are: Magic: 0x1F2D - 0x1F6C, Necro 0x2260 - 0x226F, Paladin: 0x2270 - 0x227C, Bushido: 0x238D - 0x2392, Ninjitsu: 0x23A1 - 0x23A8, SpellWeaving: 0x2D51 - 0x2D60. The list of spellids for spells.cfg is now as follows: Magery = 1+, Necro = 101+, Paladin = 201+, Bushido = 401+, Ninjitsu = 501+, SpellWeaving = 601+. Sorry this is hardcoded :P</td></tr>
<tr><td colspan="2">Weapon: If Delay != 0 Core will use it to calculate Weapon speed. Speed Entry is optional ONLY if Delay is populated.</td></tr>
</tbody>
<tbody><tr id="doc-table-dark"><th align="left" colspan="2">Related Files</th></tr></tbody>
<tbody>
<tr><td colspan="2"><a href="#spells.cfg">spells.cfg</a></td></tr>
<tr id="doc-table-light"><td colspan="2"><a href="#stacking.cfg">stacking.cfg</a></td></tr>
</tbody>
</table>
</div>
<div class="doc-mainbox-gold">
<div class="doc-anchor"><a href="#TOP">[^]</a></div>
<table class="doc-table" frame="void" rules="groups" width="100%" border="1" CELLPADDING="1" CELLSPACING="0">
<tbody><tr><th align="center" colspan="2"><a name="justice.cfg">justice.cfg</a></th></tr></tbody>
<tbody><tr id="doc-table-dark">
<th align="left">Location:</th>
<td align="left">/regions only</td>
</tr></tbody>
<tbody><tr id="doc-table-med">
<th align="left">Number Allowed</th>
<td align="left">1</td>
</tr></tbody>
<tbody><tr id="doc-table-dark">
<th align="left">Required to Start?</th>
<td align="left">No</td>
</tr></tbody>
<tbody><tr id="doc-table-med"><th align="left" colspan="2">Required/Used by</th></tr></tbody>
<tbody><tr><td colspan="2">Core</td></tr></tbody>
<tbody><tr id="doc-table-dark"><th align="left" colspan="2">Purpose</th></tr></tbody>
<tbody><tr><td colspan="2">Defines the justice regions (protected by guards). See also regions.cfg.</td></tr></tbody>
<tbody><tr id="doc-table-dark"><th align="left" colspan="2">Structure</th></tr></tbody>
<tbody><tr><td colspan="2"><pre>
Region (region name)
{
    Range        (x-west) (y-north) (x-east) (y-south)
    [Realm       (string realmname {default "britannia"})]
    [Guarded     (0/1 {default 0})]
    [EnterText   (string message)]
    [LeaveText   (string message)]
    [EnterScript (string script)]
    [LeaveScript (string script)]
}
[Region...]
</pre></td></tr></tbody>
<tbody><tr id="doc-table-dark"><th align="left" colspan="2">Explanation</th></tr></tbody>
<tbody>
<tr><td colspan="2">Important: regions only override regions found earlier in the file. So the first region should cover the entire map, and further regions override portions of the world.</td></tr>
<tr><td colspan="2">This file is preferred over regions.cfg for the above properties.</td></tr>
<tr><td colspan="2">IMPORTANT: Regions are limited to POL's internal 4x4 tile zones and will internally expand to fill all of these zones the Range is contained in.</td></tr>
</tbody>
<tbody><tr id="doc-table-dark"><th align="left" colspan="2">Related Files</th></tr></tbody>
<tbody><tr><td colspan="2"><a href="#regions.cfg">regions.cfg</a></td></tr></tbody>
</table>
</div>
<div class="doc-mainbox-gold">
<div class="doc-anchor"><a href="#TOP">[^]</a></div>
<table class="doc-table" frame="void" rules="groups" width="100%" border="1" CELLPADDING="1" CELLSPACING="0">
<tbody><tr><th align="center" colspan="2"><a name="light.cfg">light.cfg</a></th></tr></tbody>
<tbody><tr id="doc-table-dark">
<th align="left">Location:</th>
<td align="left">/regions only</td>
</tr></tbody>
<tbody><tr id="doc-table-med">
<th align="left">Number Allowed</th>
<td align="left">1</td>
</tr></tbody>
<tbody><tr id="doc-table-dark">
<th align="left">Required to Start?</th>
<td align="left">No</td>
</tr></tbody>
<tbody><tr id="doc-table-med"><th align="left" colspan="2">Required/Used by</th></tr></tbody>
<tbody><tr><td colspan="2">Core</td></tr></tbody>
<tbody><tr id="doc-table-dark"><th align="left" colspan="2">Purpose</th></tr></tbody>
<tbody><tr><td colspan="2">Defines the light regions (light levels sent to clients). See also regions.cfg.</td></tr></tbody>
<tbody><tr id="doc-table-dark"><th align="left" colspan="2">Structure</th></tr></tbody>
<tbody><tr><td colspan="2"><pre>
Region (region name)
{
    Range        (x-west) (y-north) (x-east) (y-south)
    [Realm       (string realmname {default "britannia"})]
    [Light       (int light level {default 0}]
}
[Region...]
</pre></td></tr></tbody>
<tbody><tr id="doc-table-dark"><th align="left" colspan="2">Explanation</th></tr></tbody>
<tbody>
<tr><td colspan="2">Important: regions only override regions found earlier in the file. So the first region should cover the entire map, and further regions override portions of the world.</td></tr>
<tr><td colspan="2">This file is preferred over regions.cfg for the above properties.</td></tr>
<tr><td colspan="2">IMPORTANT: Regions are limited to POL's internal 4x4 tile zones and will internally expand to fill all of these zones the Range is contained in.</td></tr>
</tbody>
<tbody><tr id="doc-table-dark"><th align="left" colspan="2">Related Files</th></tr></tbody>
<tbody><tr><td colspan="2"><a href="#regions.cfg">regions.cfg</a></td></tr></tbody>
</table>
</div>
<div class="doc-mainbox-gold">
<div class="doc-anchor"><a href="#TOP">[^]</a></div>
<table class="doc-table" frame="void" rules="groups" width="100%" border="1" CELLPADDING="1" CELLSPACING="0">
<tbody><tr><th align="center" colspan="2"><a name="menus.cfg">menus.cfg</a></th></tr></tbody>
<tbody><tr id="doc-table-dark">
<th align="left">Location:</th>
<td align="left">/config only</td>
</tr></tbody>
<tbody><tr id="doc-table-med">
<th align="left">Number Allowed</th>
<td align="left">1</td>
</tr></tbody>
<tbody><tr id="doc-table-dark">
<th align="left">Required to Start?</th>
<td align="left">Yes</td>
</tr></tbody>
<tbody><tr id="doc-table-med"><th align="left" colspan="2">Required/Used by</th></tr></tbody>
<tbody>
<tr><td colspan="2">Core</td></tr>
<tr id="doc-table-light"><td colspan="2">SelectMenuItem2()</td></tr>
</tbody>
<tbody><tr id="doc-table-dark"><th align="left" colspan="2">Purpose</th></tr></tbody>
<tbody><tr><td colspan="2">Configures old-style static menus for client selection (i.e. tailoring, fletching, etc.)</td></tr></tbody>
<tbody><tr id="doc-table-dark"><th align="left" colspan="2">Structure</th></tr></tbody>
<tbody><tr><td colspan="2"><pre>
ItemMenu
{
    Name        (string unique name)
    Title       (string title to show on menu)
    Entry       (objtype number to show)   (string description)
    [Entry...]
    [SubMenu    (string menuname) (objtype number to show)    (Description Of SubMenu)]
    [SubMenu...]
}
[ItemMenu...]
</pre></td></tr></tbody>
<tbody><tr id="doc-table-dark"><th align="left" colspan="2">Explanation</th></tr></tbody>
<tbody>
<tr><td colspan="2">The 'Name' property must exactly match with the 'SubMenu' menuname for the submenu element.</td></tr>
<tr><td colspan="2">Static menus in this file are used with UO::SelectMenuItem2()</td></tr>
</tbody>
</table>
</div>
<div class="doc-mainbox-gold">
<div class="doc-anchor"><a href="#TOP">[^]</a></div>
<table class="doc-table" frame="void" rules="groups" width="100%" border="1" CELLPADDING="1" CELLSPACING="0">
<tbody><tr><th align="center" colspan="2"><a name="movecost.cfg">movecost.cfg</a></th></tr></tbody>
<tbody><tr id="doc-table-dark">
<th align="left">Location:</th>
<td align="left">/config only</td>
</tr></tbody>
<tbody><tr id="doc-table-med">
<th align="left">Number Allowed</th>
<td align="left">1</td>
</tr></tbody>
<tbody><tr id="doc-table-dark">
<th align="left">Required to Start?</th>
<td align="left">No</td>
</tr></tbody>
<tbody><tr id="doc-table-med"><th align="left" colspan="2">Required/Used by</th></tr></tbody>
<tbody><tr><td colspan="2">Core</td></tr></tbody>
<tbody><tr id="doc-table-dark"><th align="left" colspan="2">Purpose</th></tr></tbody>
<tbody><tr><td colspan="2">Defines the stamina cost to move based on percent maximum weight carried.</td></tr></tbody>
<tbody><tr id="doc-table-dark"><th align="left" colspan="2">Structure</th></tr></tbody>
<tbody><tr><td colspan="2"><pre>
MovementCost
{
    [(integer percent max carried)   (real multiplier for movement)]...
    [Over                            (real multiplier for movement if over maximum)]
}

-or-

Walking
{
    {same as above}
}
Running
{
    {same as above}
}
[Walking_Mounted
{
    {same as above}
}]
[Running_Mounted
{
    {same as above}
}]
</pre></td></tr></tbody>
<tbody><tr id="doc-table-dark"><th align="left" colspan="2">Explanation</th></tr></tbody>
<tbody>
<tr><td colspan="2">You can specify a number of percentage capacity lines, and values in between will be linearly interpolated. 'Over' defines cost if maximum carrying capacity was exceeded.</td></tr>
<tr><td colspan="2">Maximum carrying capacity is determined as ((Strength * 7) / 2) + 40. The multiplier used will be the current weight/max capacity. This multiplier is multiplied by 8 to find the amount of stamina 'hundreths' to consume per move. So a multiplier of 10 will consume 0.8 of a stamina 'point' per move.</td></tr>
<tr><td colspan="2">The 'MovementCost' section overrides both the 'Walking' and 'Running' sections if present. If you don't declare Mounted sections, Core will use unmounted values.</td></tr>
<tr><td colspan="2">Used only of MovementUsesStamina=1 in servspecopt[.local].cfg</td></tr>
</tbody>
<tbody><tr id="doc-table-dark"><th align="left" colspan="2">Related Files</th></tr></tbody>
<tbody><tr><td colspan="2"><a href="#servspecopt.cfg">servspecopt.cfg</a></td></tr></tbody>
</table>
</div>
<div class="doc-mainbox-gold">
<div class="doc-anchor"><a href="#TOP">[^]</a></div>
<table class="doc-table" frame="void" rules="groups" width="100%" border="1" CELLPADDING="1" CELLSPACING="0">
<tbody><tr><th align="center" colspan="2"><a name="multis.cfg">multis.cfg</a></th></tr></tbody>
<tbody><tr id="doc-table-dark">
<th align="left">Location:</th>
<td align="left">/config only</td>
</tr></tbody>
<tbody><tr id="doc-table-med">
<th align="left">Number Allowed</th>
<td align="left">1</td>
</tr></tbody>
<tbody><tr id="doc-table-dark">
<th align="left">Required to Start?</th>
<td align="left">Yes</td>
</tr></tbody>
<tbody><tr id="doc-table-med"><th align="left" colspan="2">Required/Used by</th></tr></tbody>
<tbody><tr><td colspan="2">Core</td></tr></tbody>
<tbody><tr id="doc-table-dark"><th align="left" colspan="2">Purpose</th></tr></tbody>
<tbody><tr><td colspan="2">Maps the UO 'MultiID' number with the graphic number for the multi.</td></tr></tbody>
<tbody><tr id="doc-table-dark"><th align="left" colspan="2">Structure</th></tr></tbody>
<tbody><tr><td colspan="2"><pre>
House (int multid)
{
    Graphic (int graphic)
}
[House...]

Boat (int multid)
{
    (int graphic)
}
[Boat...]
</pre></td></tr></tbody>
<tbody><tr id="doc-table-dark"><th align="left" colspan="2">Explanation</th></tr></tbody>
<tbody><tr><td colspan="2">Use InsideUO to get the MultiIDs. Multi Graphics start at 0x4000 and are equal to 0x4000 + MultiID.</td></tr></tbody>
</table>
</div>
<div class="doc-mainbox-gold">
<div class="doc-anchor"><a href="#TOP">[^]</a></div>
<table class="doc-table" frame="void" rules="groups" width="100%" border="1" CELLPADDING="1" CELLSPACING="0">
<tbody><tr><th align="center" colspan="2"><a name="music.cfg">music.cfg</a></th></tr></tbody>
<tbody><tr id="doc-table-dark">
<th align="left">Location:</th>
<td align="left">/regions only</td>
</tr></tbody>
<tbody><tr id="doc-table-med">
<th align="left">Number Allowed</th>
<td align="left">1</td>
</tr></tbody>
<tbody><tr id="doc-table-dark">
<th align="left">Required to Start?</th>
<td align="left">No</td>
</tr></tbody>
<tbody><tr id="doc-table-med"><th align="left" colspan="2">Required/Used by</th></tr></tbody>
<tbody><tr><td colspan="2">Core</td></tr></tbody>
<tbody><tr id="doc-table-dark"><th align="left" colspan="2">Purpose</th></tr></tbody>
<tbody><tr><td colspan="2">Defines the music regions. See also regions.cfg.</td></tr></tbody>
<tbody><tr id="doc-table-dark"><th align="left" colspan="2">Structure</th></tr></tbody>
<tbody><tr><td colspan="2"><pre>
Region (region name)
{
    Range        (x-west) (y-north) (x-east) (y-south)
    [Realm       (string realmname {default "britannia"})]
    [Midi        (int music number)]
}
[Region...]
</pre></td></tr></tbody>
<tbody><tr id="doc-table-dark"><th align="left" colspan="2">Explanation</th></tr></tbody>
<tbody>
<tr><td colspan="2">Important: regions only override regions found earlier in the file. So the first region should cover the entire map, and further regions override portions of the world.</td></tr>
<tr><td colspan="2">This file is preferred over regions.cfg for the above properties.</td></tr>
<tr><td colspan="2">IMPORTANT: Regions are limited to POL's internal 4x4 tile zones and will internally expand to fill all of these zones the Range is contained in.</td></tr>
</tbody>
<tbody><tr id="doc-table-dark"><th align="left" colspan="2">Related Files</th></tr></tbody>
<tbody><tr><td colspan="2"><a href="#regions.cfg">regions.cfg</a></td></tr></tbody>
</table>
</div>
<div class="doc-mainbox-gold">
<div class="doc-anchor"><a href="#TOP">[^]</a></div>
<table class="doc-table" frame="void" rules="groups" width="100%" border="1" CELLPADDING="1" CELLSPACING="0">
<tbody><tr><th align="center" colspan="2"><a name="nocast.cfg">nocast.cfg</a></th></tr></tbody>
<tbody><tr id="doc-table-dark">
<th align="left">Location:</th>
<td align="left">/regions only</td>
</tr></tbody>
<tbody><tr id="doc-table-med">
<th align="left">Number Allowed</th>
<td align="left">1</td>
</tr></tbody>
<tbody><tr id="doc-table-dark">
<th align="left">Required to Start?</th>
<td align="left">No</td>
</tr></tbody>
<tbody><tr id="doc-table-med"><th align="left" colspan="2">Required/Used by</th></tr></tbody>
<tbody><tr><td colspan="2">Core</td></tr></tbody>
<tbody><tr id="doc-table-dark"><th align="left" colspan="2">Purpose</th></tr></tbody>
<tbody><tr><td colspan="2">Defines the "no spell casting allowed" regions. See also regions.cfg.</td></tr></tbody>
<tbody><tr id="doc-table-dark"><th align="left" colspan="2">Structure</th></tr></tbody>
<tbody><tr><td colspan="2"><pre>
Region (region name)
{
    Range        (x-west) (y-north) (x-east) (y-south)
    [Realm       (string realmname {default "britannia"})]
    [Nocast      (0/1 {default 0})]
}
[Region...]
</pre></td></tr></tbody>
<tbody><tr id="doc-table-dark"><th align="left" colspan="2">Explanation</th></tr></tbody>
<tbody>
<tr><td colspan="2">Important: regions only override regions found earlier in the file. So the first region should cover the entire map, and further regions override portions of the world.</td></tr>
<tr><td colspan="2">This file is preferred over regions.cfg for the above properties.</td></tr>
<tr><td colspan="2">IMPORTANT: Regions are limited to POL's internal 4x4 tile zones and will internally expand to fill all of these zones the Range is contained in.</td></tr>
</tbody>
<tbody><tr id="doc-table-dark"><th align="left" colspan="2">Related Files</th></tr></tbody>
<tbody><tr><td colspan="2"><a href="#regions.cfg">regions.cfg</a></td></tr></tbody>
</table>
</div>
<div class="doc-mainbox-gold">
<div class="doc-anchor"><a href="#TOP">[^]</a></div>
<table class="doc-table" frame="void" rules="groups" width="100%" border="1" CELLPADDING="1" CELLSPACING="0">
<tbody><tr><th align="center" colspan="2"><a name="npcdesc.cfg">npcdesc.cfg</a></th></tr></tbody>
<tbody><tr id="doc-table-dark">
<th align="left">Location:</th>
<td align="left">/config and/or any package</td>
</tr></tbody>
<tbody><tr id="doc-table-med">
<th align="left">Number Allowed</th>
<td align="left">at least 1 in /config, can be packaged.</td>
</tr></tbody>
<tbody><tr id="doc-table-dark">
<th align="left">Required to Start?</th>
<td align="left">No</td>
</tr></tbody>
<tbody><tr id="doc-table-med"><th align="left" colspan="2">Required/Used by</th></tr></tbody>
<tbody>
<tr><td colspan="2">Core</td></tr>
<tr id="doc-table-light"><td colspan="2">CreateNpcFromTemplate</td></tr>
</tbody>
<tbody><tr id="doc-table-dark"><th align="left" colspan="2">Purpose</th></tr></tbody>
<tbody><tr><td colspan="2">Configures NPC Templates for creating new NPCs and assigning properties to them.</td></tr></tbody>
<tbody><tr id="doc-table-dark"><th align="left" colspan="2">Structure</th></tr></tbody>
<tbody><tr><td colspan="2"><pre>
NpcTemplate (string unique templatename)
{
    Name                   (string paperdoll name)
    ObjType                (integer body model type)
    Script                 (string AI script)
    Gender                 (0=male 1=female)
    TrueColor              (int original body skin color)
    Color                  (int current body skin color)
    AR                     (die-string natural armor rating)
    [FireResist]           (int/die-string)]
    [ColdResist]           (int/die-string)]
    [EnergyResist]         (int/die-string)]
    [PoisonResist]         (int/die-string)]
    [PhysicalResist]       (int/die-string)]
    Alignment              ('good' 'neutral' or 'evil)

    [(VitalName)           (die-string value)]
    [VitalName...]
    
    [(AttributeName)       (die-string value)]
    [AttributeName...]
    
    [AttackDelay           (int intrinsic weapon delay in ms {default 0})]
    AttackDamage           (die-string damage for intrinsic weapon)
    AttackAttribute        (string attribute name used for intrinsic weapon)
    [AttackHitSound        (int sound ID for intrinsic weapon {default 0})]
    [AttackMissSound       (int sound ID for intrinsic weapon {default 0})]
    [AttackHitScript       (string script for intrinsic weapon hit)]
    [AttackMinRange        (int intrinsic weapon minimum range {default 0})]
    [AttackMaxRange        (int intrinsic weapon maximum range {default 0})]
    [AttackAnimation       (int animation ID {default 0 (wrestling)})]
    
    [FireDamage]            (int/(die-string value))]
    [ColdDamage]            (int/(die-string value))]
    [EnergyDamage]          (int/(die-string value))]
    [PoisonDamage]          (int/(die-string value))]
    [PhysicalDamage]        (int/(die-string value))]

    [AttackProjectile...]
    [AttackProjectileAnim...]
    [AttackProjectileType...]
    [AttackProjectileSound...]

    [MaxHp                 (int maximum hitpoints for intrinsic weapon {default 1}]

    [MoveMode              (movemode string {default 'L'})]
    [Privs                 (string privilage) [(more privs)]...]
    [Settings              (string priv set 'on') [(more privs)]...]
    
    [SpeechColor           (int speech color {default 0x3B2})]
    [SpeechFont            (int speech color {default 3})]
    
    [UseAdjustments        (0/1 {default 1})]
    [RunSpeed              (int 0-250 {default dexterity})]
}
[NpcTemplate...]
</pre></td></tr></tbody>
<tbody><tr id="doc-table-dark"><th align="left" colspan="2">Explanation</th></tr></tbody>
<tbody>
<tr><td colspan="2">Movemode string is 'L' for land 'S' for sea, and 'A' for air. I.e. 'LS' would be good for a water elemental.</td></tr>
<tr><td colspan="2">An 'intrinsic' weapon is used if the NPC does not have a weapon item equipped. It represents (usually), the Wrestling 'weapon' for the NPC. You can define sounds, damage, animation etc.</td></tr>
<tr><td colspan="2">Vital and Attribute names can use the aliases defined in attributes.cfg and vitals.cfg, i.e. 'STR' instead of 'Strength'. A Die-string may be used for the value of any of these.</td></tr>
<tr><td colspan="2">Privs and settings can be like 'invul losany' and any more seperated by spaces. Unless they also appear in 'Settings', the privilages are not active.</td></tr>
<tr><td colspan="2">UseAdjustments 1 means the NPC will adjust its facing while moving to try to avoid small obsticles. If 0, the NPC will not move if it cannot move forward, and the move function will return 0.</td></tr>
<tr><td colspan="2">RunSpeed is only useful from 0-250, the higher the number, the shorter delay between moves.</td></tr>
<tr><td colspan="2">SpeechColor and Font are only used if NPC::Say() is used.</td></tr>
<tr><td colspan="2">Alignment determines NPC's name color and their participation in the reputation system.</td></tr>
<tr><td colspan="2">Of course, you may define other config properties and cprops in this file that are not used by the core. npcdesc.cfg may be accessed with the normal Config file access functions (ReadConfigFile, etc). Note CProps in this file will be assigned to each NPC created with that template. This takes extra memory than if you look up properties using the config file access functions.</td></tr>
<tr><td colspan="2">If you have npcdes.cfg in a package, the NPC's template name becomes :packagename:templatename</td></tr>
<tr><td colspan="2">If AttackDelay != 0 Core will use it to calculate Weapon speed.</td></tr>
</tbody>
<tbody><tr id="doc-table-dark"><th align="left" colspan="2">Related Files</th></tr></tbody>
<tbody><tr><td colspan="2"><a href="#resource.cfg">resource.cfg</a></td></tr></tbody>
</table>
</div>
<div class="doc-mainbox-gold">
<div class="doc-anchor"><a href="#TOP">[^]</a></div>
<table class="doc-table" frame="void" rules="groups" width="100%" border="1" CELLPADDING="1" CELLSPACING="0">
<tbody><tr><th align="center" colspan="2"><a name="party.cfg">party.cfg</a></th></tr></tbody>
<tbody><tr id="doc-table-dark">
<th align="left">Location:</th>
<td align="left">/config only</td>
</tr></tbody>
<tbody><tr id="doc-table-med">
<th align="left">Number Allowed</th>
<td align="left">1</td>
</tr></tbody>
<tbody><tr id="doc-table-dark">
<th align="left">Required to Start?</th>
<td align="left">No</td>
</tr></tbody>
<tbody><tr id="doc-table-med"><th align="left" colspan="2">Required/Used by</th></tr></tbody>
<tbody><tr><td colspan="2">Core</td></tr></tbody>
<tbody><tr id="doc-table-dark"><th align="left" colspan="2">Purpose</th></tr></tbody>
<tbody><tr><td colspan="2">Defines general settings and hooks for the party system.</td></tr></tbody>
<tbody><tr id="doc-table-dark"><th align="left" colspan="2">Structure</th></tr></tbody>
<tbody><tr><td colspan="2"><pre>
General
{
    //How many chars are allowed in a Party (normal clients only have 10 slots)
    [MaxPartyMembers int (default 10)]
    //Newer Clients (&gt;=3.0.6e) does not automatically change "/# "
    //to private msg (they use "/t #")
    //set to true any public msg will be checked for "# " (0-9 0=slot 10)
    [TreatNoAsPrivate (1/0) (default 0)]
    //How long is an invite valid befor automatic decline
    //set to 0 disables the timeout
    [DeclineTimeout int seconds (default 10)]
    //Prefix for a private Msg (e.g. P:)
    [PrivateMsgPrefix string (default "")]
}
HookList
{
    // CanAddToParty(leader,member) return check true/false
    // called when a leader invites someone
    CanAddToParty (string exported_func_name)
    // CanRemoveMember(leader,member) return check true/false
    // called when leader wants to remove member
    CanRemoveMember (string exported_func_name)
    // CanLeaveParty (member) return check true/false
    // called when member wants to leafe the party
    CanLeaveParty (string exported_func_name)
    // OnPublicChat(member,uctext) return check none
    // called when a member sends a PartyMsg e.g. for logging
    OnPublicChat (string exported_func_name)
    // OnPrivateChat(member,tomember,uctext) return check none
    // called when a member sends a PrivateMsg e.g. for logging
    OnPrivateChat (string exported_func_name)
    // OnDisband(partyref) return check none
    // called when a Party is about to be disbanded
    OnDisband (string exported_func_name)
    // ChangePublicChat(member,uctext) return new uctext/true/false
    // called when a member sends a PartyMsg return value is the new uctextarray,
    // or true for no change, or false to block the msg
    ChangePublicChat (string exported_func_name)
    // ChangePrivateChat(member,tomember,uctext) return new uctext/true/false
    // called when a member sends a PrivateMsg return value is the new uctextarray,
    // or true for no change, or false to block the msg
    ChangePrivateChat (string exported_func_name)
} 
</pre></td></tr></tbody>
<tbody><tr id="doc-table-dark"><th align="left" colspan="2">Explanation</th></tr></tbody>
<tbody><tr><td colspan="2">HookList section is only needed if you wish to define party hooks.</td></tr></tbody>
</table>
</div>
<div class="doc-mainbox-gold">
<div class="doc-anchor"><a href="#TOP">[^]</a></div>
<table class="doc-table" frame="void" rules="groups" width="100%" border="1" CELLPADDING="1" CELLSPACING="0">
<tbody><tr><th align="center" colspan="2"><a name="pkg.cfg">pkg.cfg</a></th></tr></tbody>
<tbody><tr id="doc-table-dark">
<th align="left">Location:</th>
<td align="left">Any package</td>
</tr></tbody>
<tbody><tr id="doc-table-med">
<th align="left">Number Allowed</th>
<td align="left">1 per package</td>
</tr></tbody>
<tbody><tr id="doc-table-dark">
<th align="left">Required to Start?</th>
<td align="left">No</td>
</tr></tbody>
<tbody><tr id="doc-table-med"><th align="left" colspan="2">Required/Used by</th></tr></tbody>
<tbody><tr><td colspan="2">Core</td></tr></tbody>
<tbody><tr id="doc-table-dark"><th align="left" colspan="2">Purpose</th></tr></tbody>
<tbody><tr><td colspan="2">Package descriptor file. One is required for every package. It is read only on POL startup.</td></tr></tbody>
<tbody><tr id="doc-table-dark"><th align="left" colspan="2">Structure</th></tr></tbody>
<tbody><tr><td colspan="2"><pre>
Enabled       (0/1)
Name          (string package name)
Requires      (string package name) [(int version)] ...
Replaces      (string package name) ...
Conflicts     (string package name) ...
[Version      (string version number)]
[CoreRequired (int core version without leading 0, or full version string)]
[ProvidesSystemHomePage (0/1)]

[Maintainer   (string name)]
[Email        (string email)]
</pre></td></tr></tbody>
<tbody><tr id="doc-table-dark"><th align="left" colspan="2">Explanation</th></tr></tbody>
<tbody>
<tr><td colspan="2">Maintainer and Email aren't read by the core, but you should still include them in your own packages.</td></tr>
<tr><td colspan="2">Requires and Replaces refer to other package names that relate to this packet. If a package is defined that is 'required' and is not found, or is not a new enough version, an error will be printed.</td></tr>
<tr><td colspan="2">Version is normal version syntax, i.e 1.0, 2.3, 0.1.1.2, etc.</td></tr>
<tr><td colspan="2">CoreVersion is the POL version that is required for the package to function. Values should be formed like 94 or 95, not 094 or 095.</td></tr>
<tr><td colspan="2">Enabled 0 causes none of the scripts or configs in this package to be read</td></tr>
<tr><td colspan="2">CoreRequired can take a full version string like "POL095-2003-02-01"</td></tr>
<tr><td colspan="2">ProvidesSystemHomePage lets a SINGLE pkg to act as directory the root for the web server</td></tr>
</tbody>
</table>
</div>
<div class="doc-mainbox-gold">
<div class="doc-anchor"><a href="#TOP">[^]</a></div>
<table class="doc-table" frame="void" rules="groups" width="100%" border="1" CELLPADDING="1" CELLSPACING="0">
<tbody><tr><th align="center" colspan="2"><a name="pkgroots.cfg">pkgroots.cfg</a></th></tr></tbody>
<tbody><tr id="doc-table-dark">
<th align="left">Location:</th>
<td align="left">/config only</td>
</tr></tbody>
<tbody><tr id="doc-table-med">
<th align="left">Number Allowed</th>
<td align="left">1</td>
</tr></tbody>
<tbody><tr id="doc-table-dark">
<th align="left">Required to Start?</th>
<td align="left">No</td>
</tr></tbody>
<tbody><tr id="doc-table-med"><th align="left" colspan="2">Required/Used by</th></tr></tbody>
<tbody><tr><td colspan="2">Core</td></tr></tbody>
<tbody><tr id="doc-table-dark"><th align="left" colspan="2">Purpose</th></tr></tbody>
<tbody><tr><td colspan="2">Defines the local file system paths to the root directories for packages. /pol/pkg is automatically checked. </td></tr></tbody>
<tbody><tr id="doc-table-dark"><th align="left" colspan="2">Structure</th></tr></tbody>
<tbody><tr><td colspan="2"><pre>
PackageRoot
{
    dir (string fully qualified path)
    [dir...]
}
</pre></td></tr></tbody>
<tbody><tr id="doc-table-dark"><th align="left" colspan="2">Explanation</th></tr></tbody>
<tbody><tr><td colspan="2">If my path was D:\beer\morepol, then subdirectories of that path would be searched for packages along with /pol/pkg</td></tr></tbody>
</table>
</div>
<div class="doc-mainbox-gold">
<div class="doc-anchor"><a href="#TOP">[^]</a></div>
<table class="doc-table" frame="void" rules="groups" width="100%" border="1" CELLPADDING="1" CELLSPACING="0">
<tbody><tr><th align="center" colspan="2"><a name="pol.cfg">pol.cfg</a></th></tr></tbody>
<tbody><tr id="doc-table-dark">
<th align="left">Location:</th>
<td align="left">root directory only</td>
</tr></tbody>
<tbody><tr id="doc-table-med">
<th align="left">Number Allowed</th>
<td align="left">1</td>
</tr></tbody>
<tbody><tr id="doc-table-dark">
<th align="left">Required to Start?</th>
<td align="left">Yes</td>
</tr></tbody>
<tbody><tr id="doc-table-med"><th align="left" colspan="2">Required/Used by</th></tr></tbody>
<tbody><tr><td colspan="2">Core</td></tr></tbody>
<tbody><tr id="doc-table-dark"><th align="left" colspan="2">Purpose</th></tr></tbody>
<tbody><tr><td colspan="2">Configures many critical options for the POL server.</td></tr></tbody>
<tbody><tr id="doc-table-dark"><th align="left" colspan="2">Structure</th></tr></tbody>
<tbody><tr><td colspan="2"><pre>
UoDataFileRoot=(path to UO MUL files)
WorldDataPath=(path to POL Data files {default data/})
RealmDataPath=(path to POL Realm files {default realm/})
[ListenPort=(integer TCP port)]
[ClientEncryptionVersion=(string {default 1.26.4})]
[CheckIntegrity=(1/0 {default 1})]
[CountResourceTiles=(1/0 {default 1}]
[ClientVersion=(integer {default 37})] obselete
[Multithread=(1/0 {default 0})]
[WebServer=(1/0 {default 0})]
[WebServerPort=(int port {default 8080})]
[UseNewStaticsFile=(1/0 {default 0})]
[IgnoreLoadErrors=(1/0 {default 0})]
[DebugPort=(int port {default 0})]

[Verbose=(1/0 {default 0})]
[LogLevel=(int level {default 0})]
[SelectTimeout=(int {default 10})]
[WatchRpm=(1/0 {default 0})]
[WatchSysLoad=(1/0 {default 0})]
[LogSysLoad=(1/0 {default 0})]
[InhibitSaves=(1/0 {default 0})]
[LogScriptCycles=(1/0 {default 0})]
[WebServerLocalOnly=(1/0 {default 1})]
[WebServerDebug=(1/0 {default 0})]
[WebServerPassword=(string {default empty})]
[CacheInteractiveScripts=(1/0 {default 1})]
[ShowSpeechColors=(1/0 {default 0})]
[RequireSpellbooks=(1/0 {default 1})]
[EnableSecureTrading=(1/0 {default 0})]
[RunawayScriptThreshold=(long {default 5000})]
[InactivityWarningTimeout=(int minutes {default 4})]
[InactivityDisconnectTimeout=(int minutes {default 5})]
[MinCmdlevelToLogin=(int level {default 0})]
[MaxCallDepth=(int depth {default 100})]
[EnableAssertions=(1/0 {default 1})]
[DumpStackOnAssertionFailure=(1/0 {default 0})]
[DisplayUnknownPackets=(1/0 {default 0})]
[ExpLosChecksMap=(1/0 {default 1})]
[EnableDebugLog=(1/0 {default 0})]
[ReportMissingConfigs=(1/0 {default 1})]
[DebugPassword=(string {default empty})]
[DebugLocalOnly=(1/0 {default 1})]
[DebugLevel=(int level {default 0})]
[ReportRunToCompletionScripts=(1/0 {default 1})]
[ReportCriticalScripts=(1/0 {default 1})]
[MaximumClients=(int {default 300})]
[MaximumClientsBypassCmdLevel=(int cmdlevel {default 1})]
[CharacterSlots=(int {default 5})]
[MiniDumpType=(string small/large {default small})]
[RetainCleartextPasswords=(1/0 {default 1})]
[AssertionFailureAction=(abort/continue/shutdown/shutdown-nosave {default abort})]
</pre></td></tr></tbody>
<tbody><tr id="doc-table-dark"><th align="left" colspan="2">Explanation</th></tr></tbody>
<tbody>
<tr><td colspan="2">Your own pol.cfg should give descriptions on most of these. I'll describe them here if people want me to.</td></tr>
<tr><td colspan="2">Clarification: for ClientEncryptionVersion, the allowable values are '1.26.4', '2.0.0', 'ignition', 'uorice', and 'none'. Here, 'ignition', 'uorice', and 'none' all mean 'no encryption'.</td></tr>
<tr><td colspan="2">ListenPort is now optional, use uoclient.cfg Listener sections to define listening ports.</td></tr>
<tr><td colspan="2">AssertionFailureAction options: abort: (like old behavior) aborts immediately, without saving data. continue: allows execution to continue. shutdown: attempts graceful shutdown. shutdown-nosave: attempts graceful shutdown, without saving data. If the assertion occurred during execution of a script, either 'shutdown', 'shutdown-nosave', or 'continue' will abort that script, displaying the script name and PC.</td></tr>
<tr><td colspan="2">Hint: LogLevel can be used to debug issues at startup of POL and various other places (unloadall for example). By setting this higher than 1, up to 11 (just sounds good), it will force printing of better information to help you find out problems during Loading and such. Setting it for example, above 0, core will start spitting out "Checkpoint" data during startup to say what it is about to load/process. Such as the configuration, load realms, load multis, etc etc.</td></tr>
</tbody>
</table>
</div>
<div class="doc-mainbox-gold">
<div class="doc-anchor"><a href="#TOP">[^]</a></div>
<table class="doc-table" frame="void" rules="groups" width="100%" border="1" CELLPADDING="1" CELLSPACING="0">
<tbody><tr><th align="center" colspan="2"><a name="regions.cfg">regions.cfg</a></th></tr></tbody>
<tbody><tr id="doc-table-dark">
<th align="left">Location:</th>
<td align="left">/regions only</td>
</tr></tbody>
<tbody><tr id="doc-table-med">
<th align="left">Number Allowed</th>
<td align="left">1</td>
</tr></tbody>
<tbody><tr id="doc-table-dark">
<th align="left">Required to Start?</th>
<td align="left">No</td>
</tr></tbody>
<tbody><tr id="doc-table-med"><th align="left" colspan="2">Required/Used by</th></tr></tbody>
<tbody><tr><td colspan="2">Core</td></tr></tbody>
<tbody><tr id="doc-table-dark"><th align="left" colspan="2">Purpose</th></tr></tbody>
<tbody><tr><td colspan="2">Defines the regions in the world and various settings on each. See Explanation about splitting up this file.</td></tr></tbody>
<tbody><tr id="doc-table-dark"><th align="left" colspan="2">Structure</th></tr></tbody>
<tbody><tr><td colspan="2"><pre>
Region (region name)
{
    Range             (x-west) (y-north) (x-east) (y-south)
    [Realm            (string realmname {default "britannia"})]
    [Guarded          (0/1 {default 0})]
    [EnterText        (string message)]
    [LeaveText        (string message)]
    [EnterScript      (string script)]
    [LeaveScript      (string script)]
    [Midi             (int music number)]
    [NoCast           (0/1 {default 0})]
    [NoCombat         (0/1 {default 0})]
    [Light            (int light level {default 0}]
    [WeatherType      (int type {default 0})]
    [WeatherSeverity  (int severity {default 0})]
    [WeatherAux       (int {default 0})]
    [LightOverride    (int light level override {default 1})]
}
[Region...]
</pre></td></tr></tbody>
<tbody><tr id="doc-table-dark"><th align="left" colspan="2">Explanation</th></tr></tbody>
<tbody>
<tr><td colspan="2">Important: regions only override regions found earlier in the file. So the first region should cover the entire map, and further regions override portions of the world.</td></tr>
<tr><td colspan="2">'Guarded', 'EnterText', and 'LeaveText' are for 'justice' regions, and may be split into /regions/justice.cfg. guard.cfg will be the prefered location for these properties</td></tr>
<tr><td colspan="2">'Midi' are for 'music' regions, and may be split into /regions/music.cfg, the prefered location for these regions.</td></tr>
<tr><td colspan="2">'NoCast' are for 'nocast' regions and may be split into /regions/nocast.cfg, the prefered location for these regions.</td></tr>
<tr><td colspan="2">'NoCombat' regions will not allow the Clicking of a mobile to select as a new opponent if they are in this region. It will also reset opponent data for mob if one enters this region. This is a PvP specific addon. It does NOT check for npcs, this will have to be done via packethooks. When Entering a NoCombat region, while already in combat, if YOU are the attacker, it will reset your fight. If you are the one being attacked, it will reset the fight with the first "opponent" you have listed.</td></tr>
<tr><td colspan="2">'Light' are for 'light' regions and may be split into /regions/light.cfg, the prefered location for these regions.</td></tr>
<tr><td colspan="2">'WeatherType', 'WeatherSeverity', 'WeatherAux', and 'LightOverride' are for 'weather' regions and may be split into /regions/weather.cfg, the prefered location for these regions.</td></tr>
<tr><td colspan="2">IMPORTANT: Regions are limited to POL's internal 4x4 tile zones and will internally expand to fill all of these zones the Range is contained in.</td></tr>
</tbody>
</table>
</div>
<div class="doc-mainbox-gold">
<div class="doc-anchor"><a href="#TOP">[^]</a></div>
<table class="doc-table" frame="void" rules="groups" width="100%" border="1" CELLPADDING="1" CELLSPACING="0">
<tbody><tr><th align="center" colspan="2"><a name="repsys.cfg">repsys.cfg</a></th></tr></tbody>
<tbody><tr id="doc-table-dark">
<th align="left">Location:</th>
<td align="left">/config only</td>
</tr></tbody>
<tbody><tr id="doc-table-med">
<th align="left">Number Allowed</th>
<td align="left">1</td>
</tr></tbody>
<tbody><tr id="doc-table-dark">
<th align="left">Required to Start?</th>
<td align="left">Yes</td>
</tr></tbody>
<tbody><tr id="doc-table-med"><th align="left" colspan="2">Required/Used by</th></tr></tbody>
<tbody><tr><td colspan="2">Core</td></tr></tbody>
<tbody><tr id="doc-table-dark"><th align="left" colspan="2">Purpose</th></tr></tbody>
<tbody><tr><td colspan="2">Defines coloring and timeouts for the reputation system.</td></tr></tbody>
<tbody><tr id="doc-table-dark"><th align="left" colspan="2">Structure</th></tr></tbody>
<tbody><tr><td colspan="2"><pre>
NameColoring
{
    Murderer        (int color 38 is red)
    Criminal        (int color 905 is grey)
    Attackable      (int color 905 is grey)
    Innocent        (int color 90 is blue)
    Invulnerable    (int color)
    GuildAlly       (int color 68 is green)
    GuildEnemy      (int color 44 is something)
}

General
{
    CriminalFlagInterval (int seconds)
    AggressorFlagTimeout (int seconds)
    PartyHelpFullCountsAsCriminal (1/0 default 0)
}

HookList
{
    NameColor      (string exported_func_name)
    HighLightColor (string exported_func_name)
    OnAttack       (string exported_func_name)
    OnDamage       (string exported_func_name)
    OnHelp         (string exported_func_name)
}
</pre></td></tr></tbody>
<tbody><tr id="doc-table-dark"><th align="left" colspan="2">Explanation</th></tr></tbody>
<tbody>
<tr><td colspan="2">NameColoring defines the single-click name colors for mobiles with various reputation states.</td></tr>
<tr><td colspan="2">Repsys coloring for Invulnerable names will only occur when InvulTag in ServSpecOpt.cfg is set to 2.</td></tr>
<tr><td colspan="2">HookList section is only needed if you wish to define repsys hooks.</td></tr>
<tr><td colspan="2">HighLightColor function should be made as fast as possible, as it is called many times.</td></tr>
<tr><td colspan="2">PartyHelpFullCountsAsCriminal defines if HelpFull action counts as criminal act on murderers/criminals if in same party</td></tr>
</tbody>
<tbody><tr id="doc-table-dark"><th align="left" colspan="2">Related Files</th></tr></tbody>
<tbody><tr><td colspan="2"><a href="#servspecopt.cfg">servspecopt.cfg</a></td></tr></tbody>
</table>
</div>
<div class="doc-mainbox-gold">
<div class="doc-anchor"><a href="#TOP">[^]</a></div>
<table class="doc-table" frame="void" rules="groups" width="100%" border="1" CELLPADDING="1" CELLSPACING="0">
<tbody><tr><th align="center" colspan="2"><a name="resource.cfg">resource.cfg</a></th></tr></tbody>
<tbody><tr id="doc-table-dark">
<th align="left">Location:</th>
<td align="left">/regions only</td>
</tr></tbody>
<tbody><tr id="doc-table-med">
<th align="left">Number Allowed</th>
<td align="left">1</td>
</tr></tbody>
<tbody><tr id="doc-table-dark">
<th align="left">Required to Start?</th>
<td align="left">No</td>
</tr></tbody>
<tbody><tr id="doc-table-med"><th align="left" colspan="2">Required/Used by</th></tr></tbody>
<tbody><tr><td colspan="2">Core</td></tr></tbody>
<tbody><tr id="doc-table-dark"><th align="left" colspan="2">Purpose</th></tr></tbody>
<tbody><tr><td colspan="2">Defines the resource types in the world. Other .cfg files are then read for specific resource configurations.</td></tr></tbody>
<tbody><tr id="doc-table-dark"><th align="left" colspan="2">Structure</th></tr></tbody>
<tbody><tr><td colspan="2"><pre>
ResourceSystem
{
    ResourceType        (string resource type)
    [ResourceType...]
}
</pre></td></tr></tbody>
<tbody><tr id="doc-table-dark"><th align="left" colspan="2">Explanation</th></tr></tbody>
<tbody>
<tr><td colspan="2">Important: regions only override regions found earlier in the file. So the first region should cover the entire map, and further regions override portions of the world.</td></tr>
<tr><td colspan="2">If the resource type is 'ore', then 'ore.cfg' in the same directory will be read for resource region configurations for the ore resource.</td></tr>
<tr><td colspan="2">Most of the configuration is done in these other files, so please see resourcetype.cfg (note not an actual file, just denotes files like ore.cfg)</td></tr>
</tbody>
<tbody><tr id="doc-table-dark"><th align="left" colspan="2">Related Files</th></tr></tbody>
<tbody><tr><td colspan="2"><a href="#resourcetype.cfg">resourcetype.cfg</a></td></tr></tbody>
</table>
</div>
<div class="doc-mainbox-gold">
<div class="doc-anchor"><a href="#TOP">[^]</a></div>
<table class="doc-table" frame="void" rules="groups" width="100%" border="1" CELLPADDING="1" CELLSPACING="0">
<tbody><tr><th align="center" colspan="2"><a name="resourcetype.cfg">resourcetype.cfg</a></th></tr></tbody>
<tbody><tr id="doc-table-dark">
<th align="left">Location:</th>
<td align="left">/regions only</td>
</tr></tbody>
<tbody><tr id="doc-table-med">
<th align="left">Number Allowed</th>
<td align="left">1</td>
</tr></tbody>
<tbody><tr id="doc-table-dark">
<th align="left">Required to Start?</th>
<td align="left">No</td>
</tr></tbody>
<tbody><tr id="doc-table-med"><th align="left" colspan="2">Required/Used by</th></tr></tbody>
<tbody><tr><td colspan="2">Core</td></tr></tbody>
<tbody><tr id="doc-table-dark"><th align="left" colspan="2">Purpose</th></tr></tbody>
<tbody><tr><td colspan="2">Defines the configuration for the resource filename. Note: 'resourcetype.cfg' does not exist, this only denotes files like 'ore.cfg' or 'wood.cfg'. See resource.cfg for how to define these resource types.</td></tr></tbody>
<tbody><tr id="doc-table-dark"><th align="left" colspan="2">Structure</th></tr></tbody>
<tbody><tr><td colspan="2"><pre>
Global
{
    InitialUnits     (long number of resource units world has to start)
    [LandTile        (int landtile ID)]...
    [ObjType         (int arttile ID)]...
}
Region  (string regionname)
{
    Range               (x-west) (y-north) (x-east) (y-south)
    UnitsPerArea        (int resource units per tile)
    SecondsPerRegrow    (int seconds delay between regrows)
    Capacity            (int unit capacity for this region)
}
[Region...]
</pre></td></tr></tbody>
<tbody><tr id="doc-table-dark"><th align="left" colspan="2">Explanation</th></tr></tbody>
<tbody>
<tr><td colspan="2">Important: regions only override regions found earlier in the file. So the first region should cover the entire map, and further regions override portions of the world.</td></tr>
<tr><td colspan="2">Landtiles are the 'map' tiles, and 'ObjType' is for static art tiles. These numbers are used to know what tiles grow this type of resource. I.e. a static tree type for wood.</td></tr>
<tr><td colspan="2">Example: this file is for wood resources, and UnitsPerArea is 15. This means I can get a maximum of 15 wood from a tree until the resources 'regrow'. I could define another region that has very plentiful, or fast growing trees and adjust the UnitsPerArea and SecondsPerRegrow accordingly.</td></tr>
</tbody>
<tbody><tr id="doc-table-dark"><th align="left" colspan="2">Related Files</th></tr></tbody>
<tbody><tr><td colspan="2"><a href="#resource.cfg">resource.cfg</a></td></tr></tbody>
</table>
</div>
<div class="doc-mainbox-gold">
<div class="doc-anchor"><a href="#TOP">[^]</a></div>
<table class="doc-table" frame="void" rules="groups" width="100%" border="1" CELLPADDING="1" CELLSPACING="0">
<tbody><tr><th align="center" colspan="2"><a name="servers.cfg">servers.cfg</a></th></tr></tbody>
<tbody><tr id="doc-table-dark">
<th align="left">Location:</th>
<td align="left">/config only</td>
</tr></tbody>
<tbody><tr id="doc-table-med">
<th align="left">Number Allowed</th>
<td align="left">1</td>
</tr></tbody>
<tbody><tr id="doc-table-dark">
<th align="left">Required to Start?</th>
<td align="left">Yes</td>
</tr></tbody>
<tbody><tr id="doc-table-med"><th align="left" colspan="2">Required/Used by</th></tr></tbody>
<tbody><tr><td colspan="2">Core</td></tr></tbody>
<tbody><tr id="doc-table-dark"><th align="left" colspan="2">Purpose</th></tr></tbody>
<tbody><tr><td colspan="2">Defines the Game Servers the login server will forward clients to. Normally the game server and login server are the same machine on a POL shard, but you could run a minimal POL server to act as a login server for one or more game servers.</td></tr></tbody>
<tbody><tr id="doc-table-dark"><th align="left" colspan="2">Structure</th></tr></tbody>
<tbody><tr><td colspan="2"><pre>
GameServer
{
    Name       (string name of server)
    IP         (string ip address, or --ip-- or --lan--, see below)
    Port       (int TCP port number)
    [IPMatch   (IPaddrr)/(netmask)]...
    [AcctMatch (string account name)]...
}
[GameServer...]
</pre></td></tr></tbody>
<tbody><tr id="doc-table-dark"><th align="left" colspan="2">Explanation</th></tr></tbody>
<tbody>
<tr><td colspan="2">IP address must match the address in the clients' login.cfg files. This means if your game server is on a LAN not accessable from the internet (doing port forwarding from a router), you must define this game server IP as your router's internet IP address.</td></tr>
<tr><td colspan="2">--ip-- attempts to find your non-LAN, non-localhost IP address. If you have a multihomed server, this may behave strangely.</td></tr>
<tr><td colspan="2">--lan-- attempts to find you non-routable LAN IP address, if any (i.e. '192.168.*.*' or '10.*.*.*').</td></tr>
<tr><td colspan="2">Port is the listening port of the Game Server, not the login server (though they may be the same). See ListenPort in pol.cfg</td></tr>
<tr><td colspan="2">Example IPMatch value: 192.168.0.0/255.255.255.0 would prevent anyone with an IP address other than 192.168.0.* from seeing the gameserver.</td></tr>
<tr><td colspan="2">AcctMatch lines have one account name per line, and are those accounts to show the given server to on login to the 'login server'.</td></tr>
</tbody>
<tbody><tr id="doc-table-dark"><th align="left" colspan="2">Related Files</th></tr></tbody>
<tbody>
<tr><td colspan="2"><a href="#movecost.cfg">movecost.cfg</a></td></tr>
<tr id="doc-table-light"><td colspan="2"><a href="#pol.cfg">pol.cfg</a></td></tr>
</tbody>
</table>
</div>
<div class="doc-mainbox-gold">
<div class="doc-anchor"><a href="#TOP">[^]</a></div>
<table class="doc-table" frame="void" rules="groups" width="100%" border="1" CELLPADDING="1" CELLSPACING="0">
<tbody><tr><th align="center" colspan="2"><a name="servspecopt.cfg">servspecopt.cfg</a></th></tr></tbody>
<tbody><tr id="doc-table-dark">
<th align="left">Location:</th>
<td align="left">/config only</td>
</tr></tbody>
<tbody><tr id="doc-table-med">
<th align="left">Number Allowed</th>
<td align="left">1</td>
</tr></tbody>
<tbody><tr id="doc-table-dark">
<th align="left">Required to Start?</th>
<td align="left">no</td>
</tr></tbody>
<tbody><tr id="doc-table-med"><th align="left" colspan="2">Required/Used by</th></tr></tbody>
<tbody><tr><td colspan="2">Core</td></tr></tbody>
<tbody><tr id="doc-table-dark"><th align="left" colspan="2">Purpose</th></tr></tbody>
<tbody><tr><td colspan="2">Defines certain "Server Specific Options" that shard admins can set. If the file 'servspecopt.local.cfg' exists, the entries will be used in that file instead (to keep changes from being destroyed if a new servspecopt.cfg is installed from, say, the official distribution)</td></tr></tbody>
<tbody><tr id="doc-table-dark"><th align="left" colspan="2">Structure</th></tr></tbody>
<tbody><tr><td colspan="2"><pre>
[AllowSecureTradingInWarMode    (0/1)]
[DefaultDecayTime               (int minutes)]
[DefaultDoubleclickRange        (int range)]
[DefaultLightLevel              (int level)]
[MovementUsesStamina            (0/1)]
[TotalStatsAtCreation           (string see below)]
[DefaultContainerMaxItems       (int 0-150)]
[DefaultContainerMaxWeight      (int 0-65535)]
[UOFeatureEnable                (int flags {default 0})]
[MaxPathFindRange               (int distance {default 50})]
[HiddenTurnsCount               (0/1 {default 1})]
[ItemColorMask                  (int mask {default 0xfff})]
[DecayItems                     (0/1 {default 1})]
[UseTileFlagPrefix              (0/1 {default 1})]
[UseWinLFH                      (0/1 {default 0})]
[EventVisibilityCoreChecks      (0/1 {default 0})]
[DoubleClickWait                (int seconds {default 0})]
[InvulTag                       (0/1/2 {default 1})]
[StartingGold                   (int {default 100})]
[ScriptedAttackChecks           (0/1 {default 0})]
[CoreHitSounds                  (0/1 {default 0})]
[PrivacyPaperdoll               (0/1 {default 0})]
[ForceNewObjCachePackets        (0/1 {default 0})]
[AllowMovingTrade               (0/1 {default 0})]
[CoreHandledLocks               (0/1 {default 0})]
[DefaultAttributeCap            (int in tenths {default 1000})]
[CoreSendsCaps                  (0/1 {default 0})]
[SendStatLocks                  (0/1 {default 0})]
</pre></td></tr></tbody>
<tbody><tr id="doc-table-dark"><th align="left" colspan="2">Explanation</th></tr></tbody>
<tbody>
<tr><td colspan="2">
<i>TotalStatsAtCreation:
                              </i> takes a comma-delimited lists of values and/or ranges (default = '65,80'). Example: TotalStatsAtCreation=65,80,90-95,100-110</td></tr>
<tr><td colspan="2">
<i>MovementUsesStamina:
                              </i> if enabled stamina costs are defined in movecost.cfg</td></tr>
<tr><td colspan="2">
<i>DefaultContainerMaxItems:
                              </i> default is 125, DefaultContainerMaxWeight default is 250. itemdesc.cfg "MaxItems" and "MaxWeight" override these defaults.</td></tr>
<tr><td colspan="2">
<i>UOFeatureEnable:
                              </i> will be sent as the last DWORD flag in the 0xA9 login message. See 095+ package for values and warnings. Core will block Bit 6 (support up to 6 Chars). To enable AoS stuff set Bit 5 (use 0x20), to enable SE stuff set Bit 7 and 5 (use 0xa0) and to enable ML stuff set Bit 8, 7 and 5 (use 0x1a0).</td></tr>
<tr><td colspan="2">
<i>HiddenTurnsCount:
                              </i> will define whether or not turns made while hidden will count as a "move".</td></tr>
<tr><td colspan="2">
<i>ItemColorMask:
                              </i> is a bitmask of what colors should be considered valid. It was left a mask instead of given as a range in order to allow specifying certain bits to be on. So, for instance, with the newer clients, a mask of 0x4fff will allow the third bit (value 4) of the most significant nibble to be turned on, but no others in that nibble. Bear in mind, older clients may well crash if you set colors to be outside of the non-default mask of 0xfff.</td></tr>
<tr><td colspan="2">
<i>UseTileFlagPrefix:
                              </i> will control Core to prepend "a"/"an" according to tiles.cfg flags to formatted item names.</td></tr>
<tr><td colspan="2">
<i>UseWinLFH:
                              </i> will enable usage of Windows XP/2003 low-fragmentation Heap for better memory management.</td></tr>
<tr><td colspan="2">
<i>EventVisibilityCoreChecks:
                              </i> You have to do visibility checking by your Scripts if disabled or Core uses the old way.</td></tr>
<tr><td colspan="2">
<i>DoubleClickWait:
                              </i> Time that must pass before a player can double click something again.</td></tr>
<tr><td colspan="2">
<i>InvulTag:
                              </i> 0 Disables invul tags totally. 1 keeps them as they are now, giving [Invul] tag when single clicked. 2 will work only on 3.x+ clients, and makes the mob's highlight color Yellow with no [Invul] tag when single clicked. Only recommend using 2 if your shard requires a 3.x or higher client!</td></tr>
<tr><td colspan="2">
<i>ScriptedAttackChecks:
                              </i> If enabled, the combat hook must check distance, line of sight, visibility, and if both combatants are alive.</td></tr>
<tr><td colspan="2">
<i>CoreHitSounds:
                              </i> If enabled, the core handles sending sounds for hit on combat. When mobile hit is an NPC, it uses the NPC's DamagedSound from the NPCTemplate. If disabled, scripts must handle this.</td></tr>
<tr><td colspan="2">
<i>PrivacyPaperdoll:
                              </i> If enabled Paperdoll gives only char name for others.</td></tr>
<tr><td colspan="2">
<i>ForceNewObjCachePackets:
                              </i> Forces to only send new ObjectCacheInfos for Tooltips (since 5.0.0)</td></tr>
<tr><td colspan="2">
<i>AllowMovingTrade:
                              </i>  0 Disables moving more than 4 tiles away with an open trade window, cancels trading window.</td></tr>
<tr><td colspan="2">
<i>CoreHandledLocks:
                              </i> If enabled, core will handle the change of skill locks and stat locks from the client (setting the attribute locks).</td></tr>
<tr><td colspan="2">
<i>DefaultAttributeCap:
                              </i> defines which value POL should use as cap for attributes.</td></tr>
<tr><td colspan="2">
<i>CoreSendsCaps:
                              </i> makes POL send attribute cap information in the Send Skills (0x3A) packet</td></tr>
<tr><td colspan="2">
<i>SendStatLocks:
                              </i> makes POL send stat lock message (Client version &gt; 3)</td></tr>
</tbody>
<tbody><tr id="doc-table-dark"><th align="left" colspan="2">Related Files</th></tr></tbody>
<tbody>
<tr><td colspan="2"><a href="#movecost.cfg">movecost.cfg</a></td></tr>
<tr id="doc-table-light"><td colspan="2"><a href="#repsys.cfg">repsys.cfg</a></td></tr>
</tbody>
</table>
</div>
<div class="doc-mainbox-gold">
<div class="doc-anchor"><a href="#TOP">[^]</a></div>
<table class="doc-table" frame="void" rules="groups" width="100%" border="1" CELLPADDING="1" CELLSPACING="0">
<tbody><tr><th align="center" colspan="2"><a name="spells.cfg">spells.cfg</a></th></tr></tbody>
<tbody><tr id="doc-table-dark">
<th align="left">Location:</th>
<td align="left">/config and/or any package</td>
</tr></tbody>
<tbody><tr id="doc-table-med">
<th align="left">Number Allowed</th>
<td align="left">any</td>
</tr></tbody>
<tbody><tr id="doc-table-dark">
<th align="left">Required to Start?</th>
<td align="left">No</td>
</tr></tbody>
<tbody><tr id="doc-table-med"><th align="left" colspan="2">Required/Used by</th></tr></tbody>
<tbody>
<tr><td colspan="2">Core</td></tr>
<tr id="doc-table-light"><td colspan="2">SpeakPowerWords()</td></tr>
<tr><td colspan="2">ConsumeReagents()</td></tr>
<tr id="doc-table-light"><td colspan="2">StartSpellEffect()</td></tr>
<tr><td colspan="2">GetSpellDifficulty()</td></tr>
</tbody>
<tbody><tr id="doc-table-dark"><th align="left" colspan="2">Purpose</th></tr></tbody>
<tbody><tr><td colspan="2">Defines the spells used by the UO Client</td></tr></tbody>
<tbody><tr id="doc-table-dark"><th align="left" colspan="2">Structure</th></tr></tbody>
<tbody><tr><td colspan="2"><pre>
Spell (int spellid)
{
    SpellID     (int spellid)
    Name        (string name)
    PowerWords  (string power words)
    Script      (string script name)
    Animation   (int casting animation ID)
    [Circle     (int Circle number)]
    [Reagent    (string item name)]...
  
    [Mana       (int manacost)]
    [Difficulty (int difficulty)]
    [PointValue (int skillbonus)]
    [Delay      (int cast delay)]
}
[Spell...]
</pre></td></tr></tbody>
<tbody><tr id="doc-table-dark"><th align="left" colspan="2">Explanation</th></tr></tbody>
<tbody>
<tr><td colspan="2">Script is in current package or searches through /scripts</td></tr>
<tr><td colspan="2">Animation is less or equal to 0x22</td></tr>
<tr><td colspan="2">If the Circle property is found, Mana,Difficulty,PointValue, and Delay is gathered from circles.cfg.</td></tr>
<tr><td colspan="2">Reagent name corresponds to the "Name" property for the reagent's itemdesc.cfg entry.</td></tr>
<tr><td colspan="2">SpellID: Magery = 1+, Necro = 101+, Paladin = 201+, Bushido = 401+, Ninjitsu = 501+, SpellWeaving = 601+. Sorry this is hardcoded :P</td></tr>
</tbody>
<tbody><tr id="doc-table-dark"><th align="left" colspan="2">Related Files</th></tr></tbody>
<tbody>
<tr><td colspan="2"><a href="#itemdesc.cfg">itemdesc.cfg</a></td></tr>
<tr id="doc-table-light"><td colspan="2"><a href="#circles.cfg">circles.cfg</a></td></tr>
</tbody>
</table>
</div>
<div class="doc-mainbox-gold">
<div class="doc-anchor"><a href="#TOP">[^]</a></div>
<table class="doc-table" frame="void" rules="groups" width="100%" border="1" CELLPADDING="1" CELLSPACING="0">
<tbody><tr><th align="center" colspan="2"><a name="stacking.cfg">stacking.cfg</a></th></tr></tbody>
<tbody><tr id="doc-table-dark">
<th align="left">Location:</th>
<td align="left">Any Package and/or /config</td>
</tr></tbody>
<tbody><tr id="doc-table-med">
<th align="left">Number Allowed</th>
<td align="left">any</td>
</tr></tbody>
<tbody><tr id="doc-table-dark">
<th align="left">Required to Start?</th>
<td align="left">No</td>
</tr></tbody>
<tbody><tr id="doc-table-med"><th align="left" colspan="2">Required/Used by</th></tr></tbody>
<tbody><tr><td colspan="2">Core Item Stacking</td></tr></tbody>
<tbody><tr id="doc-table-dark"><th align="left" colspan="2">Purpose</th></tr></tbody>
<tbody><tr><td colspan="2">Specifies CProp names to ignore when stacking two items.</td></tr></tbody>
<tbody><tr id="doc-table-dark"><th align="left" colspan="2">Structure</th></tr></tbody>
<tbody><tr><td colspan="2"><pre>
Stacking
{
    IgnoreCprops  [(propname1) [(propname2)]...]  //space delimited
}
</pre></td></tr></tbody>
<tbody><tr id="doc-table-dark"><th align="left" colspan="2">Explanation</th></tr></tbody>
<tbody>
<tr><td colspan="2">propnames are space-delimited, and are case-sensative.</td></tr>
<tr><td colspan="2">This config may be packaged, so it's a good idea to only specify the cprops in the package which "belong" to that package.</td></tr>
</tbody>
</table>
</div>
<div class="doc-mainbox-gold">
<div class="doc-anchor"><a href="#TOP">[^]</a></div>
<table class="doc-table" frame="void" rules="groups" width="100%" border="1" CELLPADDING="1" CELLSPACING="0">
<tbody><tr><th align="center" colspan="2"><a name="startloc.cfg">startloc.cfg</a></th></tr></tbody>
<tbody><tr id="doc-table-dark">
<th align="left">Location:</th>
<td align="left">/config only</td>
</tr></tbody>
<tbody><tr id="doc-table-med">
<th align="left">Number Allowed</th>
<td align="left">1</td>
</tr></tbody>
<tbody><tr id="doc-table-dark">
<th align="left">Required to Start?</th>
<td align="left">yes</td>
</tr></tbody>
<tbody><tr id="doc-table-med"><th align="left" colspan="2">Required/Used by</th></tr></tbody>
<tbody><tr><td colspan="2">Core</td></tr></tbody>
<tbody><tr id="doc-table-dark"><th align="left" colspan="2">Purpose</th></tr></tbody>
<tbody><tr><td colspan="2">Defines the starting locations for new clients. They must be in this order to match the character creation screens in the UO client: Yew, Minoc, Britain, Moonglow, Trinsic, Magincia, Jhelom, Skara Brae, Vesper</td></tr></tbody>
<tbody><tr id="doc-table-dark"><th align="left" colspan="2">Structure</th></tr></tbody>
<tbody><tr><td colspan="2"><pre>
StartingLocation
{
    City        (string CityName)
    Description (string Description)
    Coordinate  (int x),(int y),(int z)
}
[StartingLocation...]
</pre></td></tr></tbody>
<tbody><tr id="doc-table-dark"><th align="left" colspan="2">Explanation</th></tr></tbody>
<tbody>
<tr><td colspan="2">CityName and Description are sent to the client! no larger than 30 characters please.</td></tr>
<tr><td colspan="2">x,y,z is where the character will be placed after created. You could set all the locations to the same coordinate to force players to start in one town.</td></tr>
</tbody>
</table>
</div>
<div class="doc-mainbox-gold">
<div class="doc-anchor"><a href="#TOP">[^]</a></div>
<table class="doc-table" frame="void" rules="groups" width="100%" border="1" CELLPADDING="1" CELLSPACING="0">
<tbody><tr><th align="center" colspan="2"><a name="syshook.cfg">syshook.cfg</a></th></tr></tbody>
<tbody><tr id="doc-table-dark">
<th align="left">Location:</th>
<td align="left">Any package</td>
</tr></tbody>
<tbody><tr id="doc-table-med">
<th align="left">Number Allowed</th>
<td align="left">any</td>
</tr></tbody>
<tbody><tr id="doc-table-dark">
<th align="left">Required to Start?</th>
<td align="left">no</td>
</tr></tbody>
<tbody><tr id="doc-table-med"><th align="left" colspan="2">Required/Used by</th></tr></tbody>
<tbody><tr><td colspan="2">Core</td></tr></tbody>
<tbody><tr id="doc-table-dark"><th align="left" colspan="2">Purpose</th></tr></tbody>
<tbody><tr><td colspan="2">Defines the hook scripts to be called by the core at certain times.</td></tr></tbody>
<tbody><tr id="doc-table-dark"><th align="left" colspan="2">Structure</th></tr></tbody>
<tbody><tr><td colspan="2"><pre>
SystemHookScript (string script_name_with_ecl)
{
    (SyshookName) (string exported_func_name)
}
[SystemHookScript...]
</pre></td></tr></tbody>
<tbody><tr id="doc-table-dark"><th align="left" colspan="2">Explanation</th></tr></tbody>
<tbody>
<tr><td colspan="2">Defines the script file and function to call for the core to call. The script should be in the same package as the syshook.cfg.</td></tr>
<tr><td colspan="2">The script_name_with_ecl should define a 'program' which will be run on server start.</td></tr>
<tr><td colspan="2">The exported_func_name should be defined with the 'exported' keyword.</td></tr>
<tr><td colspan="2">The list of SyshookNames: CheckSkill, OpenSpellbook, GetBookPage, CombatAdvancement, ParryAdvancement, Attack, Pushthrough, SpeechMul, HitMiss, OnCast</td></tr>
</tbody>
</table>
</div>
<div class="doc-mainbox-gold">
<div class="doc-anchor"><a href="#TOP">[^]</a></div>
<table class="doc-table" frame="void" rules="groups" width="100%" border="1" CELLPADDING="1" CELLSPACING="0">
<tbody><tr><th align="center" colspan="2"><a name="uoclient.cfg">uoclient.cfg</a></th></tr></tbody>
<tbody><tr id="doc-table-dark">
<th align="left">Location:</th>
<td align="left">Any Package</td>
</tr></tbody>
<tbody><tr id="doc-table-med">
<th align="left">Number Allowed</th>
<td align="left">1</td>
</tr></tbody>
<tbody><tr id="doc-table-dark">
<th align="left">Required to Start?</th>
<td align="left">Yes</td>
</tr></tbody>
<tbody><tr id="doc-table-med"><th align="left" colspan="2">Required/Used by</th></tr></tbody>
<tbody><tr><td colspan="2">Core</td></tr></tbody>
<tbody><tr id="doc-table-dark"><th align="left" colspan="2">Purpose</th></tr></tbody>
<tbody><tr><td colspan="2">Maps vital and attribute names onto UO Client idioms for character status.</td></tr></tbody>
<tbody><tr id="doc-table-dark"><th align="left" colspan="2">Structure</th></tr></tbody>
<tbody><tr><td colspan="2"><pre>
General
{
    Strength        (string Strength)
    Intelligence    (string Intelligence)
    Dexterity       (string Dexterity)

    Hits            (string Life)
    Mana            (string Mana)
    Stamina         (string Stamina)
    MaxSkillID      (integer maximum UO client skill ID)    
}
Protocol
{
    #
    # EnableFlowControlPackets: use the 0x33 (0x00 / 0x01) pause/restart packets.
    # Though OSI seems to no longer send these packets, they seem to help with smoothness,
    # particularly with boat movement.
    # NOTE: causes clients 4.0.0e and newer to fail login
    EnableFlowControlPackets    (integer 0/1)
}
Listener
{
    Port           (int port number 1024..65535)
    Encryption     (string encryption type)
    AOSResistances (integer 0/1)
}
[Listener ...]

</pre></td></tr></tbody>
<tbody><tr id="doc-table-dark"><th align="left" colspan="2">Explanation</th></tr></tbody>
<tbody>
<tr><td colspan="2">The right-hand-side "Strength", "Intelligence", and "Dexterity" are Attribute names that MUST be defined in attributes.cfg. </td></tr>
<tr><td colspan="2">The right-hand-side "Life", "Mana", and "Stamina" are Vital names that MUST be defined in vitals.cfg.</td></tr>
<tr><td colspan="2">MaxSkillID allows you to use new client skills, but setting it too high can crash older clients. You must define attributes.cfg/uoskills.cfg entries for each skillID up to MaxSkillID (default 51).</td></tr>
<tr><td colspan="2">The Protocol and Listener sections are optional.</td></tr>
<tr><td colspan="2">Each Listener section allows you to listen for different client encryption types on different ports. This means you can listen for "1.26.4" clients on port 5003 and "ignition" clients on port 5555. Valid encryption types are found in the pol.cfg section. If you use Listeners set ListenPort in pol.cfg to 0.</td></tr>
<tr><td colspan="2">AOSResistances: This flag aids in deciding which version of Armor to send in the StatMsg packets. With this enabled, a client who uses an account with AOS Expansion enabled will see their Physical Resist instead of AR member.</td></tr>
</tbody>
<tbody><tr id="doc-table-dark"><th align="left" colspan="2">Related Files</th></tr></tbody>
<tbody>
<tr><td colspan="2"><a href="#attributes.cfg">attributes.cfg</a></td></tr>
<tr id="doc-table-light"><td colspan="2"><a href="#pol.cfg">pol.cfg</a></td></tr>
<tr><td colspan="2"><a href="#uoskills.cfg">uoskills.cfg</a></td></tr>
<tr id="doc-table-light"><td colspan="2"><a href="#vitals.cfg">vitals.cfg</a></td></tr>
</tbody>
</table>
</div>
<div class="doc-mainbox-gold">
<div class="doc-anchor"><a href="#TOP">[^]</a></div>
<table class="doc-table" frame="void" rules="groups" width="100%" border="1" CELLPADDING="1" CELLSPACING="0">
<tbody><tr><th align="center" colspan="2"><a name="uoconvert.cfg">uoconvert.cfg</a></th></tr></tbody>
<tbody><tr id="doc-table-dark">
<th align="left">Location:</th>
<td align="left">root directory only</td>
</tr></tbody>
<tbody><tr id="doc-table-med">
<th align="left">Number Allowed</th>
<td align="left">1</td>
</tr></tbody>
<tbody><tr id="doc-table-dark">
<th align="left">Required to Start?</th>
<td align="left">Yes</td>
</tr></tbody>
<tbody><tr id="doc-table-med"><th align="left" colspan="2">Required/Used by</th></tr></tbody>
<tbody><tr><td colspan="2">UOConvert</td></tr></tbody>
<tbody><tr id="doc-table-dark"><th align="left" colspan="2">Purpose</th></tr></tbody>
<tbody><tr><td colspan="2">Defining what Multi IDs are what type (Boat, House, Stairs). Defining what Item IDs are Mounts. Configures options for UOConvert.</td></tr></tbody>
<tbody><tr id="doc-table-dark"><th align="left" colspan="2">Structure</th></tr></tbody>
<tbody><tr><td colspan="2"><pre>
#
# UseNoShoot:         means uoconvert will determine whether or not something blocks LOS by use of
#                     the NoShoot tiledata flag instead of the Blocking tiledata flag.
# LOSThroughWindows:  only matters if UseNoShoot is 1. If LOSThroughWindows is 1, then
#                     items marked as windows in tiledata will not impede LOS.
#
# Both of these options default to false. When UseNoShoot is false, the old method of
# determining sight blocking as being equivalent to ability to pass will be used for LOS.
#
LOSOptions
{
    UseNoShoot        (integer 0/1)
    LOSThroughWindows (integer 0/1)
}

#
# MaxStaticsPerBlock:         max. Amount of Static Items per Block of 8x8x256
#                             it is hard limited to 10000. default is 1000.
#
# WarningStaticsPerBlock:     max. Amount of Static Items per Block of 8x8x256 - just a Warning Level
#                             it is hard limited to 10000. default is 1000.
#
# ShowIllegalGraphicWarning:  show warning if Static with illegal Graphic# found
#                             0 or 1. default is 1.
#
StaticOptions
{
    MaxStaticsPerBlock        (int statics number 0..10000)
    WarningStaticsPerBlock    (int statics number 0..10000)
    ShowIllegalGraphicWarning (integer 0/1)
}

#
# ShowRoofAndPlatformWarning: show warning if Roof and Platform Flag are used at same Tile
#                             0 or 1. default is 1.
#
TileOptions
{
    ShowRoofAndPlatformWarning (integer 0/1)
}

MultiTypes
{
  Boats (int MultiID) [(int MultiID) ...]
  
  Houses (int MultiID) [(int MultiID) ...]
  
  Stairs (int MultiID) [(int MultiID) ...]
}

Mounts
{
  Tiles (int ItemID) [(int ItemID) ...]
}
</pre></td></tr></tbody>
<tbody><tr id="doc-table-dark"><th align="left" colspan="2">Explanation</th></tr></tbody>
<tbody>
<tr><td colspan="2">MultiIDs depends on your multi.mul/idx.</td></tr>
<tr><td colspan="2">ItemIDs depends on your anim.mul and tiledata.mul.</td></tr>
</tbody>
</table>
</div>
<div class="doc-mainbox-gold">
<div class="doc-anchor"><a href="#TOP">[^]</a></div>
<table class="doc-table" frame="void" rules="groups" width="100%" border="1" CELLPADDING="1" CELLSPACING="0">
<tbody><tr><th align="center" colspan="2"><a name="uopacket.cfg">uopacket.cfg</a></th></tr></tbody>
<tbody><tr id="doc-table-dark">
<th align="left">Location:</th>
<td align="left">Any Package</td>
</tr></tbody>
<tbody><tr id="doc-table-med">
<th align="left">Number Allowed</th>
<td align="left">any</td>
</tr></tbody>
<tbody><tr id="doc-table-dark">
<th align="left">Required to Start?</th>
<td align="left">No</td>
</tr></tbody>
<tbody><tr id="doc-table-med"><th align="left" colspan="2">Required/Used by</th></tr></tbody>
<tbody><tr><td colspan="2">Core</td></tr></tbody>
<tbody><tr id="doc-table-dark"><th align="left" colspan="2">Purpose</th></tr></tbody>
<tbody><tr><td colspan="2">Defines a Packet Hook which allow the scripter to intercept incoming client messages and outgoing server messages. This allows the scripter to decide how to implement the UO client's feature-of-the-week, without having to wait for the POL team to create a customizable solution for each packet. You will need a UO Network Protocol document to successfully create packet hook scripts. Note not all client features can be completely implemented in packet hook scripts, some will require core support, which we will endevour to provide.</td></tr></tbody>
<tbody><tr id="doc-table-dark"><th align="left" colspan="2">Structure</th></tr></tbody>
<tbody><tr><td colspan="2"><pre>
Packet (packet ID byte)
{
  Length            (fixed integer length or 'variable' without quotes)
  [Is6017           (0,1)]
  [ReceiveFunction  (string scriptname:functionname)]
  [SendFunction     (string scriptname:functionname)]
  [SubCommandOffset (int)]
  [SubCommandLength (1, 2 or 4)]
}
[Packet...]

SubPacket (main packet ID byte)
{
  SubCommandID     (int sub-command id)
  [Is6017           (0,1)]
  [ReceiveFunction (string scriptname:functionname)]
  [SendFunction    (string scriptname:functionname)]
}
[SubPacket...]
</pre></td></tr></tbody>
<tbody><tr id="doc-table-dark"><th align="left" colspan="2">Explanation</th></tr></tbody>
<tbody>
<tr><td colspan="2">Packet ID must be a byte integer, i.e. 12 or 0xAE.</td></tr>
<tr><td colspan="2">Is6017: This is show the defined packet entry is explicity for a 6.0.1.7 and higher packet type. Will let you define packethooks for the same packet, that is different based on client version.</td></tr>
<tr><td colspan="2">Length MUST be exactly correct for fixed-length packets and in bytes (i.e. message 0x20 is 19 bytes), or the string 'variable' for variable-length packets (i.e. 0xAE unicode speech).</td></tr>
<tr><td colspan="2">ReceiveFunction is the function to intercept a packet coming from a client. SendFunction is to intercept an outgoing packet created by the core (i.e. player status update). Normally a Packet element will only define one of these two, unless the packet is bi-directional AND the core currently sends the packet.</td></tr>
<tr><td colspan="2">SubCommandOffset is the 0-based offset into the packet that contains the sub-command ID number, if applicable for this packet. SubCommandLength is the number of bytes to extract to determine the sub command (ex. 2 for 0xBF, 1 for 0x12).</td></tr>
<tr><td colspan="2">SubCommandID is the 2-byte ID to be found at the parent packet's SubCommandOffset. You need not define Receive and Send functions for the parent packet if you define subpacket entries. If a subcommand is received or being sent that is not hooked, the default behavior will occur. As normal, the parent packet entry must only be defined once.</td></tr>
<tr><td colspan="2">Hint: Please do not try to hook Sub-Sub-Commands (like the 0xBF 0x06 Party System subsubcommands), instead use a case statement in the subcommand hook.</td></tr>
<tr><td colspan="2">Hint: You can find examples in packethooks.txt</td></tr>
</tbody>
</table>
</div>
<div class="doc-mainbox-gold">
<div class="doc-anchor"><a href="#TOP">[^]</a></div>
<table class="doc-table" frame="void" rules="groups" width="100%" border="1" CELLPADDING="1" CELLSPACING="0">
<tbody><tr><th align="center" colspan="2"><a name="uoskills.cfg">uoskills.cfg</a></th></tr></tbody>
<tbody><tr id="doc-table-dark">
<th align="left">Location:</th>
<td align="left">Any Package</td>
</tr></tbody>
<tbody><tr id="doc-table-med">
<th align="left">Number Allowed</th>
<td align="left">any</td>
</tr></tbody>
<tbody><tr id="doc-table-dark">
<th align="left">Required to Start?</th>
<td align="left">Yes</td>
</tr></tbody>
<tbody><tr id="doc-table-med"><th align="left" colspan="2">Required/Used by</th></tr></tbody>
<tbody><tr><td colspan="2">Core</td></tr></tbody>
<tbody><tr id="doc-table-dark"><th align="left" colspan="2">Purpose</th></tr></tbody>
<tbody><tr><td colspan="2">Maps Attribute names onto the UO Skill ID numbers.</td></tr></tbody>
<tbody><tr id="doc-table-dark"><th align="left" colspan="2">Structure</th></tr></tbody>
<tbody><tr><td colspan="2"><pre>
Skill (SkillID)
{
    Attribute   (Attribute_name)
}
Additional entries required up to maximum UO skill id
</pre></td></tr></tbody>
<tbody><tr id="doc-table-dark"><th align="left" colspan="2">Explanation</th></tr></tbody>
<tbody>
<tr><td colspan="2">Attribute_name defines the Attribute associated with this UO Skill. Only one attribute may be mapped to a skill id. Attribute_name must be found in attributes.cfg!</td></tr>
<tr><td colspan="2">SkillID must be an integer between 0 and 500, though any entries past the maximum UO skill id will not be sent to the UO client.</td></tr>
</tbody>
<tbody><tr id="doc-table-dark"><th align="left" colspan="2">Related Files</th></tr></tbody>
<tbody>
<tr><td colspan="2"><a href="#uoclient.cfg">uoclient.cfg</a></td></tr>
<tr id="doc-table-light"><td colspan="2"><a href="#attributes.cfg">attributes.cfg</a></td></tr>
</tbody>
</table>
</div>
<div class="doc-mainbox-gold">
<div class="doc-anchor"><a href="#TOP">[^]</a></div>
<table class="doc-table" frame="void" rules="groups" width="100%" border="1" CELLPADDING="1" CELLSPACING="0">
<tbody><tr><th align="center" colspan="2"><a name="vitals.cfg">vitals.cfg</a></th></tr></tbody>
<tbody><tr id="doc-table-dark">
<th align="left">Location:</th>
<td align="left">Any Package</td>
</tr></tbody>
<tbody><tr id="doc-table-med">
<th align="left">Number Allowed</th>
<td align="left">any</td>
</tr></tbody>
<tbody><tr id="doc-table-dark">
<th align="left">Required to Start?</th>
<td align="left">Yes</td>
</tr></tbody>
<tbody><tr id="doc-table-med"><th align="left" colspan="2">Required/Used by</th></tr></tbody>
<tbody><tr><td colspan="2">Core</td></tr></tbody>
<tbody><tr id="doc-table-dark"><th align="left" colspan="2">Purpose</th></tr></tbody>
<tbody><tr><td colspan="2">Defines Attribute names and aliases</td></tr></tbody>
<tbody><tr id="doc-table-dark"><th align="left" colspan="2">Structure</th></tr></tbody>
<tbody><tr><td colspan="2"><pre>
Vital (Vital_Name)
{
    RegenRateFunction   (string scriptname:exported_func_name)
    MaximumFunction     (string scriptname:exported_func_name)
    [Alias              (string Alias_Name)]...
    [UnderflowFunction  (string scriptname:exported_func_name)]
    [RegenWhileDead     (integer 0/1 {default 0})]
}
[Vital...]
</pre></td></tr></tbody>
<tbody><tr id="doc-table-dark"><th align="left" colspan="2">Explanation</th></tr></tbody>
<tbody>
<tr><td colspan="2">Vital_Name defines the UNIQUE name for this vital, like 'Mana', 'Stamina', etc.</td></tr>
<tr><td colspan="2">Aliases are optional and any number maybe be assigned for each vital. This way 'Hits' may be used in place of 'Life'</td></tr>
<tr><td colspan="2">At the LEAST, these attributes must be defined: 'Life', 'Stamina', 'Mana' for use in internal calculations.</td></tr>
<tr><td colspan="2">RegenRateFunction should return value from -30000 to 30000. Regen rates are in 'hundredths of points per minute.' A current regen rate of 100 (1 point per 5 seconds) would therefore be 1200 (12 points per minute)</td></tr>
<tr><td colspan="2">MaximumFunction should return the maximum value for this vital, an integer in 'hundreths' between 100 and 10000000 (1-100,000)</td></tr>
<tr><td colspan="2">UnderflowFunction not implimented.</td></tr>
</tbody>
<tbody><tr id="doc-table-dark"><th align="left" colspan="2">Related Files</th></tr></tbody>
<tbody>
<tr><td colspan="2"><a href="#uoclient.cfg">uoclient.cfg</a></td></tr>
<tr id="doc-table-light"><td colspan="2"><a href="#attributes.cfg">attributes.cfg</a></td></tr>
</tbody>
</table>
</div>
<div class="doc-mainbox-gold">
<div class="doc-anchor"><a href="#TOP">[^]</a></div>
<table class="doc-table" frame="void" rules="groups" width="100%" border="1" CELLPADDING="1" CELLSPACING="0">
<tbody><tr><th align="center" colspan="2"><a name="watch.cfg">watch.cfg</a></th></tr></tbody>
<tbody><tr id="doc-table-dark">
<th align="left">Location:</th>
<td align="left">/config only</td>
</tr></tbody>
<tbody><tr id="doc-table-med">
<th align="left">Number Allowed</th>
<td align="left">1</td>
</tr></tbody>
<tbody><tr id="doc-table-dark">
<th align="left">Required to Start?</th>
<td align="left">No</td>
</tr></tbody>
<tbody><tr id="doc-table-med"><th align="left" colspan="2">Required/Used by</th></tr></tbody>
<tbody><tr><td colspan="2">Core</td></tr></tbody>
<tbody><tr id="doc-table-dark"><th align="left" colspan="2">Purpose</th></tr></tbody>
<tbody><tr><td colspan="2">Turns on certain spammy debugging messages.</td></tr></tbody>
<tbody><tr id="doc-table-dark"><th align="left" colspan="2">Structure</th></tr></tbody>
<tbody><tr><td colspan="2"><pre>
[Combat (0 or 1)]
[ProfileScripts (0 or 1)]
</pre></td></tr></tbody>
<tbody><tr id="doc-table-dark"><th align="left" colspan="2">Explanation</th></tr></tbody>
<tbody>
<tr><td colspan="2">If 'Combat 1' is in this file, information regarding combat damage, hits and misses, etc will be printed.</td></tr>
<tr><td colspan="2">If 'ProfileScripts 1' is in this file, profiling information will be printed when any script exits.</td></tr>
</tbody>
</table>
</div>
<div class="doc-mainbox-gold">
<div class="doc-anchor"><a href="#TOP">[^]</a></div>
<table class="doc-table" frame="void" rules="groups" width="100%" border="1" CELLPADDING="1" CELLSPACING="0">
<tbody><tr><th align="center" colspan="2"><a name="weather.cfg">weather.cfg</a></th></tr></tbody>
<tbody><tr id="doc-table-dark">
<th align="left">Location:</th>
<td align="left">/regions only</td>
</tr></tbody>
<tbody><tr id="doc-table-med">
<th align="left">Number Allowed</th>
<td align="left">1</td>
</tr></tbody>
<tbody><tr id="doc-table-dark">
<th align="left">Required to Start?</th>
<td align="left">No</td>
</tr></tbody>
<tbody><tr id="doc-table-med"><th align="left" colspan="2">Required/Used by</th></tr></tbody>
<tbody><tr><td colspan="2">Core</td></tr></tbody>
<tbody><tr id="doc-table-dark"><th align="left" colspan="2">Purpose</th></tr></tbody>
<tbody><tr><td colspan="2">Defines the weather regions. See also regions.cfg.</td></tr></tbody>
<tbody><tr id="doc-table-dark"><th align="left" colspan="2">Structure</th></tr></tbody>
<tbody><tr><td colspan="2"><pre>
Region (region name)
{
    Range             (x-west) (y-north) (x-east) (y-south)
    [Realm            (string realmname {default "britannia"})]
    [WeatherType      (int type {default 255})]
    [WeatherSeverity  (int severity {default 0})]
    [WeatherAux       (int {default 0})]
    [LightOverride    (int light level override {default 1})]
}
[Region...]
</pre></td></tr></tbody>
<tbody><tr id="doc-table-dark"><th align="left" colspan="2">Explanation</th></tr></tbody>
<tbody>
<tr><td colspan="2">Important: regions only override regions found earlier in the file. So the first region should cover the entire map, and further regions override portions of the world.</td></tr>
<tr><td colspan="2">This file is preferred over regions.cfg for the above properties.</td></tr>
<tr><td colspan="2">IMPORTANT: Regions are limited to POL's internal 4x4 tile zones and will internally expand to fill all of these zones the Range is contained in.</td></tr>
<tr><td colspan="2">type:
    0 - light rain ("It starts to rain")
    1 - rain/thunder ("A fierce storm approaches")
    2 - snow ("It begins to snow")
    3 - brewing storm - ("A storm is brewing")
    255 - None (Turns sound effects off)
      
    severity:is set on a 0-70 scale, 70=torrential rain, 0=light drizzle.     
    aux: nothing
    lightoverride: light level amount overrides current level. -1 means no override.</td></tr>
</tbody>
<tbody><tr id="doc-table-dark"><th align="left" colspan="2">Related Files</th></tr></tbody>
<tbody><tr><td colspan="2"><a href="#regions.cfg">regions.cfg</a></td></tr></tbody>
</table>
</div>
<div class="doc-mainbox-gold">
<div class="doc-anchor"><a href="#TOP">[^]</a></div>
<table class="doc-table" frame="void" rules="groups" width="100%" border="1" CELLPADDING="1" CELLSPACING="0">
<tbody><tr><th align="center" colspan="2"><a name="www.cfg">www.cfg</a></th></tr></tbody>
<tbody><tr id="doc-table-dark">
<th align="left">Location:</th>
<td align="left">/config only</td>
</tr></tbody>
<tbody><tr id="doc-table-med">
<th align="left">Number Allowed</th>
<td align="left">1</td>
</tr></tbody>
<tbody><tr id="doc-table-dark">
<th align="left">Required to Start?</th>
<td align="left">no</td>
</tr></tbody>
<tbody><tr id="doc-table-med"><th align="left" colspan="2">Required/Used by</th></tr></tbody>
<tbody><tr><td colspan="2">Core</td></tr></tbody>
<tbody><tr id="doc-table-dark"><th align="left" colspan="2">Purpose</th></tr></tbody>
<tbody><tr><td colspan="2">Defines custom MIME types for web server.</td></tr></tbody>
<tbody><tr id="doc-table-dark"><th align="left" colspan="2">Structure</th></tr></tbody>
<tbody><tr><td colspan="2"><pre>
MIME (string extension)
{
    Extension (string extension)
    MIME      (string mime)
}
[MIME...]
</pre></td></tr></tbody>
<tbody><tr id="doc-table-dark"><th align="left" colspan="2">Explanation</th></tr></tbody>
<tbody><tr><td colspan="2">This allows you to add new file types that the web server can handle, for example PNG images, PDF files or favicon.ico. If you don't supply a www.cfg, old defaults are used ("jpg", "jpeg" and "gif").</td></tr></tbody>
</table>
</div>
</div>
</div></div>

<div id="footer">
	<div class="container">
    <p >
      If you <i>know</i> if any information is incorrect on these pages, mail your corrections to polteam@polserver.com
    </p>
    <p >
      Copyright &copy;2003-2009 David Carpman and POL Development Team, all rights reserved. DO NOT REPRODUCE, MIRROR, ALTER, SPINDLE, MUTILATE, OR SIT ON.
    </p>
    </div>
    </div>
    </body>
    </html>
   
